Цепочка с пустым значением в Kotlin
У nullable-значения оператор ?. перед
scope-вызовом пропускает лямбду, если ссылка
равна null. Весь такой фрагмент тогда
дает null, и цепочка дальше не ломается:
class Tag(var text: String = "")
fun main() {
val source: Tag? = null
val same = source?.apply {
text = "skip"
}
println(same)
}
При непустой ссылке блок выполняется как обычно, а вызов возвращает объект после настройки:
class Tag(var text: String = "")
fun main() {
val source: Tag? = Tag()
val same = source?.apply {
text = "ok"
}
println(same?.text)
}
С also правило то же: при null
побочный код не запускается, результат звена -
null. Цепочку можно продолжить еще одним
?.:
fun main() {
val nick: String? = null
val upper = nick?.also {
println(it)
}?.uppercase()
println(upper)
}
Класс Caption имеет изменяемое поле
text. Переменная типа Caption?
равна null. Запишите в поле "x"
через безопасную цепочку и выведите ссылку
после вызова.
Дана nullable-строка "node". Выведите
ее длину в верхнем регистре одной цепочкой с
побочным выводом исходного текста. Повторите
для null и сравните оба итога.