let と as でスッキリ

Kotlin メモ。

as を使ったキャストはスマートなのだけど、変数を使わざるをえなくなる。

val view = view.findViewById(R.id.picker) as NumberPicker // as に続けて書けないよね?
view.minValue = 0
view.maxValue = 100
view.setOnValueChangedListener {
    picker, oldVal, newVal ->
    Log.d(TAG, "$newVal is selected.")
}

なんて思っていたのだけど、もっとスマート(?)な方法があった。

view.findViewById(R.id.picker).let {
    it as NumberPicker
    it.minValue = minValue
    it.maxValue = maxValue
    it.setOnValueChangedListener {
        picker, oldVal, newVal ->
        Log.d(TAG, "$newVal is selected.")
    }
}