具有两个以上变量的Kotlin开关语句?

说我设置getCount()= 3,我怎样才能指定要检索的第三个项目的片段和页面标题?

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" 

使用when表达式 :

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

要么

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

要么

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

我知道这不是你真正要求的,但是实际上可能更容易拥有配对列表,并进行正常的索引检索。 例如

 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() } 

它看起来像你控制计数范围,但假设你不能,你也可以比较我的列表的长度,如果更大,那么长度使用长度代替。 这应该很容易处理你的“两个变量”的情况下,我认为相当可管理的方式。