[英]How to retrieve the value(s) of a parameter declared with vararg in an enum in Kotlin
I am new to Kotlin and I have an enum containing many values, those values refer to different states my application has. 我是Kotlin的新手,我有一个包含许多值的枚举,这些值指的是我的应用程序具有的不同状态。
Now I need to log something whenever the app enters a state but some state in the enum can log more than one thing (based on other parameters coming from outside the app) and some state does not need to log something. 现在我需要在应用程序进入状态时记录某些内容,但枚举中的某些状态可以记录多个内容(基于来自应用程序外部的其他参数),并且某些状态不需要记录某些内容。
Here is my enum: 这是我的枚举:
enum class StateName(vararg log: String) {
FIRST_CONNECTION(), // no parameter here
AUTHORIZATION_CHECK("message 1", "message 2"),
HANDSHAKE_SUCCESS("message")
//...
}
If had declared the enum with a single obligatory parameter StateName(var log: String)
I could have used HANDSHAKE_SUCCESS.log
to retrieve its value but with vararg
the IDE (android studio) does not find log
at all. 如果使用单个必需参数
StateName(var log: String)
声明了枚举,我本可以使用HANDSHAKE_SUCCESS.log
来检索其值,但是使用vararg
IDE(android studio)根本找不到log
。
So how can I retrieve my string with something like log[0]
? 那么如何用
log[0]
类的东西检索我的字符串呢?
Note : 注意 :
You need to change it to: 您需要将其更改为:
enum class StateName(vararg val log: String)
This way you can access the log 这样您就可以访问日志了
You need to create a variable inside enum which will hold all the arguments like below: 你需要在枚举中创建一个变量,它将包含所有的参数,如下所示:
enum class StateName( vararg log: String) {
FIRST_CONNECTION(), // no parameter here
AUTHORIZATION_CHECK("message 1", "message 2"),
HANDSHAKE_SUCCESS("message");
public var logParams:Array<out String>
init{
logParams=log
}
}
And to print the param corresponding to particular enum, you can iterate like below: 要打印与特定枚举相对应的参数,您可以按以下方式迭代:
for (item in StateName.AUTHORIZATION_CHECK.logParams) {
println("item = "+item)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.