如何在Kotlin中省略lambda参数?
有时我不使用所有lambda参数,如下面示例中的第二个参数,它是更改事件中的旧值:如何在Kotlin中省略lambda参数?,lambda,kotlin,Lambda,Kotlin,有时我不使用所有lambda参数,如下面示例中的第二个参数,它是更改事件中的旧值: selected.onChange { value, _ -> checkBox.isChecked = value } 我如何省略它们?导致代码混乱,影响可读性。以前我使用了上述方法,但在kotlin 1.0.0-beta-1103中保留了下划线。您可以使用(即反勾号)或重载onChange 反勾号 selected.onChange { value, `_` -> checkBo
selected.onChange { value, _ ->
checkBox.isChecked = value
}
我如何省略它们?导致代码混乱,影响可读性。以前我使用了上述方法,但在kotlin 1.0.0-beta-1103中保留了下划线。您可以使用(即反勾号)或重载onChange
反勾号
selected.onChange { value, `_` ->
checkBox.isChecked = value
}
重载onChange
interface Listener<T1, T2> {
fun onChange(f: (T1, T2) -> Unit) // original method
fun onChange(f: (T1) -> Unit) // new method
}
然后,您可以根据需要调用onChange
:
selected.onChange { value ->
checkBox.isChecked = value
}
从1.1开始,您可以完全做到: 未使用变量的下划线(自1.1起) 如果lambda参数未使用,则可以改为放置下划线 其名称:
map.forEach { _, value -> println("$value!") }
我应该补充一点,编译器现在会为未使用的lambda参数生成一个警告,并且Android Studio有一个新的相应快速修复程序如果您经常使用lambda来保证这一点,那么您可以添加一个扩展函数,对不希望删除的参数执行相同的操作。
map.forEach { _, value -> println("$value!") }