Kotlin中switch的替代方法是when。因此,在回收器 View 适配器中,当我返回 View 类型时,我使用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
    }
}

但是,以上语句发送了我们的警告消息Return can be lifted out of 'when'

有谁知道使用when的正确方法是什么?以及如何解决上述情况?

最佳答案

您使用的when就像一个简单的Java switch语句,虽然可以,但不是很惯用,可以进行改进。您可以分两步重构代码:

  • Kotlin的when可以用作表达式returns a value if you wish:
    override fun getItemViewType(position: Int): Int {
        return when (position) {
            0 -> ItemViewType.TITLE.type
            1 -> ItemViewType.SUBTITLE.type
            2 -> ItemViewType.ITEM.type
            else -> -1
         }
    }
    
  • 现在可以由一个语句组成的函数主体可以更改为expression body:
    override fun getItemViewType(position: Int) = when (position) {
         0 -> ItemViewType.TITLE.type
         1 -> ItemViewType.SUBTITLE.type
         2 -> ItemViewType.ITEM.type
         else -> -1
    }
    
  • 10-08 17:58