17 kotlin
我是新手.任何人都可以举例说明使用值和valueOf方法迭代枚举吗?
这是我的enum课程
enum class Gender {
Female,
Male
}
Run Code Online (Sandbox Code Playgroud)
我知道我们可以得到这样的价值
Gender.Female
Run Code Online (Sandbox Code Playgroud)
但我想迭代并显示Gender的所有值.我们怎样才能做到这一点?Anyhelp可能会受到赞赏
mie*_*sol 30
您可以这样使用values:
val genders = Gender.values()
Run Code Online (Sandbox Code Playgroud)
从Kotlin 1.1开始,还有一些辅助方法:
val genders = enumValues<Gender>()
Run Code Online (Sandbox Code Playgroud)
通过上述内容,您可以轻松迭代所有值:
enumValues<Gender>().forEach { println(it.name) }
Run Code Online (Sandbox Code Playgroud)
要将枚举名称映射到枚举值,请使用valueOf/ enumValueOflike,如下所示:
val male = Gender.valueOf("Male")
val female = enumValueOf<Gender>("Female")
Run Code Online (Sandbox Code Playgroud)
Var*_*Raj 14
您可以将此方法添加到您的枚举类中。
fun getList(): List<String> {
return values().map {
it.toString()
}
}
Run Code Online (Sandbox Code Playgroud)
并打电话
val genders = Gender.getList()
// genders is now a List of string
// Female, Male
Run Code Online (Sandbox Code Playgroud)
zsm*_*b13 10
您正在[LGender;@2f0e140b打印或类似于打印输出,Gender.values()因为您正在打印数组引用本身,并且数组没有toString像列表那样的很好的默认实现。
打印所有值的最简单方法是遍历该数组,如下所示:
Gender.values().forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)
或者,如果您喜欢方法引用:
Gender.values().forEach(::println)
Run Code Online (Sandbox Code Playgroud)
您还可以使用joinToString标准库中的单个格式化字符串显示所有值(它甚至有前缀、后缀、分隔符等选项):
println(Gender.values().joinToString()) // Female, Male
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11486 次 |
| 最近记录: |