我想做这样的事情:
class MyPagerAdapter : PagerAdapter() {
override fun getItem(position: Int) = when(position) {
0 -> Fragment0()
1 -> Fragment1()
}
override fun getCount() = 2
}
Run Code Online (Sandbox Code Playgroud)
我确信适配器只包含 2 个项目,所以getCount()
只返回 2。但它显示了一条错误消息,表示'when' expression must be exhaustive, add necessary 'else' branch
. 我知道我可以添加一个else
来解决它,但是编写如下代码真的很难看:
when(position) {
0 -> Fragment0()
1 -> Fragment1()
else -> Fragment() // Impossible to get here
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决它?谢谢。
1)如果你无法到达其他分支
throw IllegalStateException("Fragment $position 不正确")
您的代码可以随时更改。它将帮助您更好地理解您发送的值不正确。
2)此外,如果您只有两种情况,则可以使用 if (..) {} else {} 语句
3)您可以使用枚举值来不具有其他分支(而不是位置)。
编译器无法确定它position
是in 0 until 1
. 您必须添加else
分支并希望它永远不会被调用:
else -> throw AssertionError()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5948 次 |
最近记录: |