Gamas en Kotlin debajo de API 21

Quiero almacenar pares key-valor como < 4.1, 29..35 > que puedo hacer con un 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) } 

¿Cómo puedo hacer esto debajo del nivel API 21?

Use IntRange en IntRange lugar:

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

Tenga en count que 29..35 es un intervalo cerrado :

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

Para crear un range que no incluya su elemento final, use 29 until 35 :

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

Para más información: Rangos

Range es una class en el SDK de Android, esto está ligado a la API 21. Sin embargo, podría usar IntRange proporcionado por la biblioteca estándar de Kotlin.

Aquí puede encontrar ejemplos de uso de los ranges de Kotlin.

Así es como se ve su uso básico:

 val range = 1..10 // creation println(range.first) // 1 println(range.last) // 10 println(5 in range) // true 
  • Vista previa de Android Studio 3.0 Faltan importaciones cuando se refabrica el código de Kotlin
  • Constructor de class de datos con dos constructores diferentes en Kotlin
  • Kotlin - IllegalArgumentException en método anulado
  • Cómo alternar la visibilidad de FAB con otro FAB
  • ¿Cómo replace webView por webView personalizado?
  • ¿No es posible establecer expectativas sobre una propiedad perezosa?
  • Setter for field se elimina por tipo de proyección
  • ¿Es posible devolver el mismo tipo que el parámetro de tipo en la instrucción when
  • Cómo verificar la function de kotlin varargs usando mockito
  • ¿Tiene Kotlin una function de "enumerar" como Python?
  • ¿Kotlin o Swift pueden analizar JSON como Javascript?