1 回答

TA貢獻1829條經(jīng)驗 獲得超13個贊
這可能是一個可行的實施方案。將所有枚舉及其類型映射到 aString并將它們存儲為屬性。然后只需使用字符串比較來查找您的搜索輸入:
enum class Test(val type: List<String>) {
A(listOf("aa", "ab", "ac")),
B(listOf("bb", "bc", "bd")),
C(listOf("aa", "bb", "dd"));
companion object {
private val normalizedValues = values().flatMap { value ->
value.type.map { "${value.name}.$it" }
}
fun listAll() = normalizedValues
fun search(type: String?) = normalizedValues.contains(type)
}
}
fun main() {
println(Test.listAll())
println(Test.search("B.bd"))
println(Test.search("B.ad"))
}
輸出:
[A.aa, A.ab, A.ac, B.bb, B.bc, B.bd, C.aa, C.bb, C.dd]
true
false
(旁注:我簡化了你的代碼,并使用小駝峰命名法作為函數(shù)名稱。你也可以直接使用normalizedValues而不是listAll(),但我決定保留你現(xiàn)有的簽名。)
添加回答
舉報