就像标题所说
class Answers {
enum class Answer(text: String) {
YES("Yes."),
No("No."),
MAYBE("Maybe."),
AGAIN("Ask again.")
}
val answers = Answer.values()
val rand = Random()
fun genAnswer ():String {
val n = rand.nextInt(3)+1
// return Answer[answers[n]].text
}
}
我想随机选择一个枚举元素并返回其text属性,但似乎我无法使用它的值来检索元素。
我认为信息足够了。
答案 0 :(得分:4)
您可以通过执行以下操作获取随机枚举值:
DELETE FROM Raw_data
WHERE NOT EXISTS (SELECT *
CoCode
WHERE CoCode.id = Raw_data.code)
请务必使用val randomAnswer = Answer.values().toList().shuffled().first().text
公开text
属性。现在,它只是一个构造函数参数:
val
答案 1 :(得分:0)
当你在param的构造函数中编写val / var时,它会在类中声明一个属性。如果不编写它,它只是传递给主构造函数的参数。所以只需将val添加到构造函数param文本中,这将使其成为具有getter的属性,并且上面的程序将起作用..
import java.util.*
class Answers {
enum class Answer(val text: String) {
YES("Yes."),
No("No."),
MAYBE("Maybe."),
AGAIN("Ask again.")
}
val answers: Array<Answer> = Answer.values()
val rand = Random()
fun genAnswer ():String {
val n = rand.nextInt(3)+1
return answers[n].text
}
}
fun main(String: Array<String>) {
print(Answers().genAnswer())
}
答案 2 :(得分:0)
我将这种通用函数用于任何类型的枚举
/**
* return random enum value of enum class T
*/
inline fun <reified T : Enum<T>> randomEnum(): T {
val enumValues: Array<T> = enumValues()
return enumValues[(0 until enumValues.size).random()]
}
/**
* return random Int from start to end of range
*/
fun IntRange.random(): Int =
Random().nextInt((endInclusive + 1) - start) + start
答案 3 :(得分:0)
我有一个包含语言值的 Enum SupportedLocale
我分两步完成
获取枚举值列表:
val languages: Array<SupportedLocale> = SupportedLocale.values()
现在使用纵坐标位置选择随机值
val randomLocale = languages[Random().nextInt(languages.size)]
答案 4 :(得分:0)
Answer.values().random()
应该为 kotlin 做这项工作。