Различия между данными, текст или применить - PullRequest
0 голосов
/ 03 сентября 2018

Я читаю документы для Android https://developer.android.com/topic/libraries/data-binding/?hl=en о данных, и я нашел это:

Котлин

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}

Java

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

Интересно, почему в котлине используется apply вместо text(aka setText) функции?

1 Ответ

0 голосов
/ 03 сентября 2018
findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
} 

приведенный выше код эквивалентен

val textView  = findViewById<TextView>(R.id.sample_text)
textView.text = viewModel.userName

Функция применения - это функция области видимости. Его основным вариантом использования является инициализация объектов и использование в стиле Builder методов, возвращающих Unit

fun arrayOfMinusOnes(size: Int): IntArray {
    return IntArray(size).apply { fill(-1) }
}
...