Kotlin 科特林:返回可以从';何时';
Kotlin中的Kotlin 科特林:返回可以从';何时';,kotlin,Kotlin,Kotlin中的开关的替代方法是when。因此,在回收器视图适配器中,当我返回视图类型时,我使用when: override fun getItemViewType(position: Int): Int { when (position) { 0 -> return ItemViewType.TITLE.type 1 -> return ItemViewType.SUBTITLE.type 2 -> return Ite
开关
的替代方法是when
。因此,在回收器视图适配器中,当我返回视图类型时,我使用when
:
override fun getItemViewType(position: Int): Int {
when (position) {
0 -> return ItemViewType.TITLE.type
1 -> return ItemViewType.SUBTITLE.type
2 -> return ItemViewType.ITEM.type
else -> return -1
}
}
但是,上面的语句发送了我们的警告消息返回可以从'when'
中取消
有人知道当使用
时,正确的使用方法是什么吗?如何解决上述问题 您的when
是正确的,但是如果您在任何情况下返回,Kotlin都有能力将返回从“when”中取出,因此它变成:
override fun getItemViewType(position: Int): Int {
return when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}
}
在Kotlin中,一些语句,包括if
、when
和try
,都可以返回值。因此,在您的例子中,您可以重构语句,使when
语句返回实际值,然后从函数返回实际值
因此,您可以将方法简化为以下内容:
override fun getItemViewType(position: Int): Int = when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}
您正在使用when
像一个简单的Javaswitch
语句,这很好,但不是很地道,可以改进。您可以分两步重构代码:
Kotlin的当
可用作表达式时,它:
现在由单个语句组成的函数体可以更改为:
只需在关键字和try@chandanicshekhat当
块体时,您仍然需要删除块体的return
语句才能使用该返回。一般提示:将鼠标放在有问题的代码上,然后按Alt Enter键。AS应该能够通过自身修复类似的警告相关:if语句也可以用作表达式:因此,如果(a>b)a else b得到这个答案,则可以返回if语句发出的警告消息作为Kotlin初学者,与之相比,这让我觉得非常优雅Java@Tom欢迎来到科特林!你会发现这是一个常见的问题。Kotlin和ES6JavaScript之间的相似性也很有趣
override fun getItemViewType(position: Int): Int {
return when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}
}
override fun getItemViewType(position: Int) = when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}