4. Понятие обнуляемости

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

По умолчанию переменные не могут быть пустыми null.

  1. Объявите переменную Intи присвойте nullей значение.
var rocks: Int = null
⇒ error: null can not be a value of a non-null type Int
  1. Используйте вопросительный знак яйцо ?после типа, чтобы указать, что переменная может быть равна null. Объявите переменную Int?и присвойте nullей значение.
var marbles: Int? = null

Когда у вас сложные типы данных, например, список:

  • Вы можете разрешить элементам списка быть пустыми (null).
  • Вы можете разрешить списку принимать значения null, но если он не равен null, его элементы не могут быть null.
  • Вы можете разрешить как самому списку, так и его элементам быть пустыми.

Списки и некоторые другие сложные типы данных будут рассмотрены в последующем задании.

Вы можете проверить это nullс помощью ?оператора, что избавит вас от необходимости писать множество операторов if/ else.

  1. Напишите более длинный код для проверки того, fishFoodTreatsне является ли переменная пустой null. Затем уменьшите значение этой переменной.
var fishFoodTreats = 6
if (fishFoodTreats != null) {
    fishFoodTreats = fishFoodTreats.dec()
}
  1. Теперь рассмотрим, как это написано на Kotlin с использованием ?оператора.
var fishFoodTreats = 6
fishFoodTreats = fishFoodTreats?.dec()
  1. Также можно объединять проверки на null с помощью ?:оператора. Посмотрите на этот пример:
fishFoodTreats = fishFoodTreats?.dec() ?: 0

Это сокращенная запись для выражения «если fishFoodTreatsне равно null, уменьшите значение и используйте его; в противном случае используйте значение после ?:, которое равно 0». Если fishFoodTreatsравно null, вычисление останавливается, и dec()метод не вызывается.

Если вам действительно нравятся значения NullPointerExceptionsтипа `null`, Kotlin позволяет их сохранить. Оператор проверки на ненулевое значение !!(двойной восклицательный знак) преобразует любое значение в ненулевой тип и генерирует исключение, если значение равно `null` null.

val len = s!!.length   // throws NullPointerException if s is null

Последнее изменение: Воскресенье, 5 апреля 2026, 12:14