【问题标题】:Ranges in Kotlin below API 21低于 API 21 的 Kotlin 范围
【发布时间】:2017-12-07 21:59:38
【问题描述】:

我想存储像 < 4.1, 29..35 > 这样的键值对,我可以用 HashMap<Double, Range<Int>> 来做到这一点:

val womanMap: HashMap<Double, Range<Int>> = hashMapOf()

@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
fun createMap() {
    //This both requires API 21
    val range = Range(29,35)
    womanMap[4.6] = Range.create(29,35)
} 

如何在 API 级别 21 以下执行此操作?

【问题讨论】:

    标签: android kotlin android-api-levels


    【解决方案1】:

    Range 是 Android SDK 中的一个类,它与 API 21 相关联。不过,您可以改用 Kotlin 标准库提供的 IntRange

    您可以找到 Kotlin 范围 here 的使用示例。

    这是它们的基本用法:

    val range = 1..10    // creation
    println(range.first) // 1
    println(range.last)  // 10
    println(5 in range)  // true
    

    【讨论】:

    • 谢谢,非常感谢您的帮助!!
    【解决方案2】:

    改用IntRange

    val womanMap: HashMap<Double, IntRange> = hashMapOf()
    
        @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
        fun createMap() {
            val range = 29..35
            womanMap[4.6] = 29..35
        }
    

    注意29..35 是一个闭合区间:

    for (a in 29..35) print("$a ") // >>> 29 30 31 32 33 34 35
    

    要创建一个不包括其结束元素的范围,请使用29 until 35

    for (a in 29 until 35) print("$a ") // >>> 29 30 31 32 33 34
    

    欲了解更多信息:Ranges

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 2019-06-05
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2016-07-19
      • 2016-11-26
      相关资源
      最近更新 更多