偶然发现了Kotlin的魔术能力,可以用Kotlin的按键区域记录值
private val durationFromAngel:HashMap<ClosedFloatingPointRange<Float>, Long> =
hashMapOf(1F..4F to 15L, 5F..9F to 150L, 10F..14F to 300L, 15F..29F to 700L)
但是我不知道如果我有uniqe输入键怎么办呢
下一步不正确。
val value = durationFromAngel[5F]
但是我想通过1F..5F范围内的5F值获取
答案 0 :(得分:1)
Hashmap并不能真正帮助您,因为您无法按键查找。而是使用列表并找到您要查找的范围:
val durationFromAngel = listOf(
1F..4F to 15L,
5F..9F to 150L,
10F..14F to 300L,
15F..29F to 700L
)
val (_, result) = durationFromAngel.find { (range) -> 6F in range }!!
println(result)
确保您还可以添加扩展功能,例如:
operator fun <N: Comparable<N>, T> List<Pair<ClosedFloatingPointRange<N>, T>>.get(value: N) =
this.find { (range) -> value in range }!!
val (range, value) = durationFromAngel[6f]
println(value)
但是那只是语法糖。