Ми розглянули об'єкти й тепер прийшов час розглянути випадки, коли у нас можуть бути відсутні якісь дані.
Що таке nullable? Nullable – це властивість типу не обов'язково мати значення, а дозволяти null (ніщо).
val string: String? = null
Як ми бачимо, у нас додався знак питання ? після типу, і тепер значення може дорівнювати null.
💡 Цікаво знати
В багатьох мовах програмування ви можете отримати помилку прямо під час роботи програми, якщо забудете перевірити, чи є дані. Це називають "помилкою на мільярд доларів". Kotlin змушує вас перевіряти такі змінні ще на етапі написання коду.
Ви кажете компілятору: "Я точно впевнений, що тут не null".
val foo: String? = "abc"println(foo!!.length)
⚠️ Увага
Використовуйте !! дуже обережно. Якщо там все ж таки виявиться null, ваша програма негайно аварійно завершиться.
💡 Лайфхак
Оскільки значення var може змінитись у будь-який момент (наприклад, іншим потоком), смарт-касти для них не працюють. Найкраще створити локальну копію через val:
val localString = globalString ?: returnprintln(localString) // Тепер localString — це звичайна String