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

Nullable-параметр в Kotlin

Запись T в объявлении сама по себе не допускает null: подставленный тип должен быть ненулевым, если только тип явно не написали T? в нужном месте сигнатуры.

Функция может искать элемент в списке и не находить его - тогда результат помечают как nullable через T?, а список остается List<T>:

fun <T> findFirst(list: List<T>, match: (T) -> Boolean): T? { for (item in list) { if (match(item)) return item } return null } fun main() { val nums = listOf(2, 4, 6) println(findFirst(nums) { it > 10 }) println(findFirst(nums) { it == 4 }) }

Если бы параметр типа объявили как T? в угловых скобках, смысл был бы другой: сам T уже включал бы null, и List<T> хранил бы nullable-элементы. Сравните с функцией, которая возвращает строго T и бросает ошибку, когда список пуст:

fun <T> firstStrict(list: List<T>): T { if (list.isEmpty()) error("empty") return list[0] } fun main() { val words = listOf("io", "api") println(firstStrict(words)) }

Объявите функцию, которая возвращает последний элемент списка или null для пустого списка. Проверьте на пустом списке строк и на списке из одного слова "go", оба результата выведите.

Объявите функцию, которая возвращает первый элемент списка и завершает программу с ошибкой, если список пуст. Для listOf(7, 8) выведите полученное число.

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