Optional



🟢 lvl: jun



ℹ️ Зачем нужны опционалы, когда есть проверка на nil?



Как минимум, опциональность проверяется на этапе компиляции, что снижает количество ошибок в runtime. По своей сути опционал является обычным enum'ом, в котором 2 кейса: .some, .none.



Развернуть (анврапить) опционал можно множествами способами, но остановимся на самых неочевидных:



🟣 map —позволяет преобразовать опционал, если он имеет значение, или ничего не делать, если он пуст.



можно юзать map() для безопасного преобразования без проверки и анврапинга — если бы он был равен нулю, вызов map() ничего бы не сделал.



map вернет преобразованный опциональный тип



🔵 flatMap - делает почти тоже самое, только уберет дополнительное преобразование в опционал, если оно имеется