Kotlin: Return can be lifted out of 'when'
You’re using when
like a simple Java switch
statement, which is okay but not very idiomatic and can be improved. You can refactor your code in two steps:
Kotlin's
when
can be used as an expression, it 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 } }
The function body, now consisting of a single statement, can be changed into an expression body:
override fun getItemViewType(position: Int) = when (position) { 0 -> ItemViewType.TITLE.type 1 -> ItemViewType.SUBTITLE.type 2 -> ItemViewType.ITEM.type else -> -1 }
Your when
is correct, however Kotlin has the ability to lift the return out of the 'when' if you are returning in every case, thus it becomes :
override fun getItemViewType(position: Int): Int {
return when (position) {
0 -> ItemViewType.TITLE.type
1 -> ItemViewType.SUBTITLE.type
2 -> ItemViewType.ITEM.type
else -> -1
}
}