Menu
Coddy logo textTech

Утверждение ненулевого значения

Часть раздела Основы путешествия по Kotlin на Coddy. Урок 17 из 93.

Оператор безопасного вызова и оператор Элвиса корректно обрабатывают значения null, но иногда вы абсолютно уверены, что в определённый момент выполнения кода значение, допускающее null, не равно null. Оператор утверждения о ненулевом значении !! позволяет сообщить Kotlin: «Я гарантирую, что это не null».

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // Преобразует String? в String
    println(length)  // Выводит: 5
}

Оператор !! преобразует nullable-тип в его non-nullable-эквивалент. Однако, если значение действительно равно null, ваша программа завершится с ошибкой NullPointerException:

fun main() {
    val name: String? = null
    val length = name!!.length  // Падает здесь!
}

Когда это использовать: Используйте !! только тогда, когда у вас есть логика, гарантирующая, что значение не может быть null, но компилятор не может это проверить. В большинстве случаев вместо этого отдавайте предпочтение безопасным вызовам ?. или оператору Элвиса ?:. Утверждение о ненулевом значении должно быть вашим крайним средством, а не первым выбором.

challenge icon

Задание

Легко

Напиши функцию getUppercaseLength, которая принимает параметр text и возвращает длину его версии в верхнем регистре.

Функция получает ненулевое строковое значение, но тип параметра допускает значение null (String?). Используй оператор утверждения ненулевого значения !!, чтобы преобразовать его в тип, не допускающий null, затем вызови метод uppercase() и получи значение length.

Параметры:

  • text (String?): Строка, допускающая значение null, которая гарантированно содержит значение

Возвращает: Длину версии текста в верхнем регистре (Int)

Примечание: В этом задании входные данные всегда будут допустимой строкой, а не null. Это имитирует ситуацию, когда ты знаешь, что значение существует, но компилятор не может это проверить.

Попробуйте сами

fun getUppercaseLength(text: String?): Int {
    // Напишите код здесь
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Kotlin