🗒 Задача¶
Изменить пример из видео урока. В уроке создавался блок кода, считывающий возраст. И если возраст больше или равен 18 лет, показывали экран с ограниченным контентом (выводили это сообщение в консоль в качестве имитации). Новое условие:
-
Пользователь должен вводить не возраст, а год рождения;
-
Возраст пользователя высчитывать на основании текущего года;
-
Вычисляемый результат должен сравниваться с константой, в которой хранится возраст совершеннолетия (18);
-
Если год рождения подходит, выводить сообщение “Показать экран со скрытым контентом”.
❌ Ошибки¶
✏️ Комментарии¶
Использование оператора `!!` подразумевает, что ты уверен в том, что значение не может быть `null`. Однако, если это не так, то приложение "упадет" с ошибкой. Поэтому этот оператор считается опасным и не рекомендуется использовать. Только в крайних случаях.
Это противоречит основной идее безопасности типов в Kotlin, поэтому лучше использовать альтернативные способы обработки нулабельных значений. Такие как оператор безопасного вызова `?.`, элвис-оператор `?:` или оператор `let`.
Но пока я рекомендую использовать более свежую функцию readln(). Метод под капотом обрабатывает нулябельность и все кастует в строку (в том числе null становится строкой “null”).
В данном случае лучше использовать функцию readln(), которая не будет выбрасывать исключение, если в нее прийдет null, а просто вернет строку (строка будет конфликтовать с приведением к целочисленному типу, но это другой кейс, важнее разобраться с нулябельностью)
Оператор !! (утверждение “это не null”) использовать не рекомендуется. При получении null, программа упадет с ошибкой. Подробнее об этом будет в дальнейших уроках https://youtu.be/hf4vrHucYNU
Здесь же рекомендую использовать readln() - метод уже обрабатывает нуллябельность, дополнительная обработка не нужна и любые значения приводятся к строке.