Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpExtNl 6 of 299 menu
◀ ▶

Расширение nullable-типа в Kotlin

Функция-расширение может быть объявлена для nullable-типа: после имени типа ставят ?. Тогда this внутри тоже nullable, и пустое значение обрабатывают в теле функции:

fun String?.orDash(): String { if (this == null) { return "-" } return this } fun main() { val a: String? = "hi" val b: String? = null println(a.orDash()) println(b.orDash()) }

Тот же смысл записывают короче через оператор ?:. Функция orDash подставляет прочерк, если строки нет:

fun String?.orDash(): String = this ?: "-" fun main() { val note: String? = null println(note.orDash()) }

Вызов orDash не требует ?. перед именем: расширение само написано для String? и принимает null как получатель.

Объявите функцию orDash для String?. Она возвращает "-" для null и саму строку иначе. Выведите результат для null и для "ok".

Объявите функцию orZero для Int?. Она возвращает 0 для null и число иначе. Выведите ответ для null и для 7.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить