Эквивалент синтаксиса `! :: someReference` в Котлине - PullRequest
0 голосов
/ 05 февраля 2019

Проходя через этот Android Doc, я увидел этот фрагмент кода:

fun getUsers(): LiveData<List<User>> {
    if (!::users.isInitialized) {
        users = MutableLiveData()
        loadUsers()
    }
    return users
}

Мне известно об использовании оператора :: для создания ссылки на член или классассылка.Но каков кодовый эквивалент синтаксиса !::users.isInitialized?

PS: Это не дубликат Какая польза от оператора :: в Kotlin?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

:: - это краткая форма для this:: в Kotlin.

:: - это оператор для создания ссылки на член или ссылку на класс.

Он также используется для Проверьте, инициализирована ли переменная lateinit или для получения Связанные ссылки на классы

Начиная с Kotlin 1.2, явно указывать this в качестве получателя не нужно: this::и :: эквивалентны.

Вы можете просмотреть примеры документов для ясного понимания того же.

0 голосов
/ 05 февраля 2019

В примере из Android Docs есть lateinit переменная users на несколько строк выше вашего фрагмента:

private lateinit var users: MutableLiveData<List<User>>

Синтаксис ::users.isInitialized проверяет, инициализирована ли переменная lateinit users.см. документацию для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...