Kotlin switch-statement con más de dos variables?

Digamos que establezco getCount () = 3, ¿cómo puedo especificar qué fragment y título de página recuperar para el tercer elemento?

class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { override fun getCount() = 3 override fun getItem(i: Int) = if (i == 0) KotlinListFragment() else if (i == 1) JavaListFragment() else (i == 2) AndroidFragment() override fun getPageTitle(i: Int) = if (i == 0) "Kotlin" else (i == 1) "Java" else (i == 2) "Android" 

Usa la expresión when :

 when (getCount()) { 0 -> return "a" 1 -> return "b" 2 -> return "c" else -> return "" } 

o

 return when (getCount()) { 0 -> "a" // etc else -> "" } 

o

 when (getCount()) { 0 -> { // do something here } // etc. else -> {} } 

Sé que esto no es lo que realmente estabas preguntando, pero en realidad podría ser más fácil tener una Lista de pares y hacer una recuperación normal del índice en su lugar. Por ejemplo

 class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { private val fragment = listOf("Kotlin" to KotlinListFragment(), "Java" to JavaListFragment(), "Android" to AndroidFragment()) override fun getCount() = 3 override fun getItem(i: Int) = fragment[i].second() override fun getPageTitle(i: Int) = fragment[i].first() } 

Parece que controlas el range de recuento, pero asumiendo que no lo tienes también puedes comparar el i con la longitud de la list y, si es mayor que la longitud, usa la longitud en su lugar. Eso debería manejar fácilmente su escenario de "dos variables" de una manera bastante manejable, creo.

  • Faltan classs en android studio 3.0 canary 4 ui preview
  • El complemento 'org.jetbrains.kotlin' no se inicializó y se desactivará. Reinicia Android Studio
  • Anko: scope interno de aplicar, resolución de propiedad confusa
  • Cómo usar la anotación de Jackson JsonSubTypes en Kotlin
  • Room Persistence @Relation trabajando en Java pero no en Kolin
  • ¿Es posible usar funciones de order superior con arguments opcionales?
  • Problemas al analizar datos con RxJava + Kotlin
  • Kapt + LoganSquare no funciona bien en el mapeo
  • Kotlin y la forma idiomática de escribir, 'si no nulo, más ...' en function del valor mutable
  • Kotlin: Bloqueando corutinas con E / S sin locking
  • Cuerda de relleno en Kotlin