Замените androidx.lifecycle.Observer на "это" - PullRequest
0 голосов
/ 28 октября 2019

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 Ответ

4 голосов
/ 28 октября 2019

По своей сути, если лямбда имеет один параметр, вы можете ссылаться на него как it. Вы также можете решить назвать его - это то, что делает isInitMode -> часть кода. Оба являются правильными, оба делают одно и то же.

Кроме того, присвоение имен вашим параметрам может иногда (не всегда) значительно улучшить читаемость кода.

Ознакомьтесь с этой частью документации: https://kotlinlang.org/docs/reference/lambdas.html#it-implicit-name-of-a-single-parameter

...