用“ it”替换androidx.lifecycle.Observer

时间:2019-10-28 08:41:28

标签: android kotlin android-viewmodel

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
            }
            })

它也起作用。 为什么?

1 个答案:

答案 0 :(得分:4)

根据设计,如果lambda具有一个参数,则可以将其称为it。您还可以决定命名它-这就是代码isInitMode ->的一部分。两者都是正确的,两者的作用完全相同。

此外,命名参数有时(并非总是)可能会增加代码的可读性。

查看文档的此部分: https://kotlinlang.org/docs/reference/lambdas.html#it-implicit-name-of-a-single-parameter