Android Studio 3.6
在我的片段中:
import androidx.lifecycle.Observer
bluetoothPageViewModel.isInitModeLiveData().observe(this,
Observer<Boolean> { isInitMode ->
if (isInitMode) {
// do some code
})
还有我的ViewModel:
class BluetoothPageViewModel(application: Application) : AndroidViewModel(application) {
private val isInitModeLiveData = MutableLiveData<Boolean>()
fun isInitModeLiveData(): LiveData<Boolean> {
return isInitModeLiveData
}
很好,工作正常。很好。
但是我可以像这样替换片段中的代码:
b
luetoothPageViewModel.isInitModeLiveData().observe(this, Observer {
if (it) {
// do some code
}
})
它也起作用。 为什么?
答案 0 :(得分:4)
根据设计,如果lambda具有一个参数,则可以将其称为it
。您还可以决定命名它-这就是代码isInitMode ->
的一部分。两者都是正确的,两者的作用完全相同。
此外,命名参数有时(并非总是)可能会增加代码的可读性。
查看文档的此部分: https://kotlinlang.org/docs/reference/lambdas.html#it-implicit-name-of-a-single-parameter