如何在 Kotlin 的枚举中检索用 vararg 声明的参数的值
How to retrieve the value(s) of a parameter declared with vararg in an enum in Kotlin
我是 Kotlin 的新手,我有一个包含许多值的枚举,这些值指的是我的应用程序具有的不同状态。
现在我需要在应用程序进入某个状态时记录一些内容,但枚举中的某些状态可以记录不止一件事(基于来自应用程序外部的其他参数),而某些状态不需要记录某些内容。
这是我的枚举:
enum class StateName(vararg log: String) {
FIRST_CONNECTION(), // no parameter here
AUTHORIZATION_CHECK("message 1", "message 2"),
HANDSHAKE_SUCCESS("message")
//...
}
如果使用单个强制参数 StateName(var log: String)
声明枚举,我可以使用 HANDSHAKE_SUCCESS.log
来检索它的值,但是使用 vararg
IDE (android studio) 根本找不到 log
。
那么我怎样才能用 log[0]
之类的东西检索我的字符串?
注:
- 我的枚举已经定义(没有参数)并在我的应用程序中使用,我不能使用不同的方法来更改实际的 state/adding 日志记录功能
- 即使我刚刚开始学习,我也需要使用 Kotlin,因为该项目是用这种语言编写的,所以我只想知道我是否(以及如何)做到这一点。
您需要将其更改为:
enum class StateName(vararg val log: String)
这样你就可以访问日志了
您需要在枚举中创建一个变量,它将包含如下所有参数:
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
}
}
并打印对应于特定枚举的参数,您可以像下面这样迭代:
for (item in StateName.AUTHORIZATION_CHECK.logParams) {
println("item = "+item)
}
我是 Kotlin 的新手,我有一个包含许多值的枚举,这些值指的是我的应用程序具有的不同状态。
现在我需要在应用程序进入某个状态时记录一些内容,但枚举中的某些状态可以记录不止一件事(基于来自应用程序外部的其他参数),而某些状态不需要记录某些内容。
这是我的枚举:
enum class StateName(vararg log: String) {
FIRST_CONNECTION(), // no parameter here
AUTHORIZATION_CHECK("message 1", "message 2"),
HANDSHAKE_SUCCESS("message")
//...
}
如果使用单个强制参数 StateName(var log: String)
声明枚举,我可以使用 HANDSHAKE_SUCCESS.log
来检索它的值,但是使用 vararg
IDE (android studio) 根本找不到 log
。
那么我怎样才能用 log[0]
之类的东西检索我的字符串?
注:
- 我的枚举已经定义(没有参数)并在我的应用程序中使用,我不能使用不同的方法来更改实际的 state/adding 日志记录功能
- 即使我刚刚开始学习,我也需要使用 Kotlin,因为该项目是用这种语言编写的,所以我只想知道我是否(以及如何)做到这一点。
您需要将其更改为:
enum class StateName(vararg val log: String)
这样你就可以访问日志了
您需要在枚举中创建一个变量,它将包含如下所有参数:
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
}
}
并打印对应于特定枚举的参数,您可以像下面这样迭代:
for (item in StateName.AUTHORIZATION_CHECK.logParams) {
println("item = "+item)
}