Как стать автором
Обновить

Комментарии 13

Вторая уже есть в статье, первую пожалуй стоит добавить, спасибо!
Все-таки жаль, что не внедряют типы по примеру Swift'овского Type!, что дает обнуляемую ссылку, которую не надо каждый раз проверять. Это очень удобно когда значение null не имеет какой-либо семантики, но при этом необнуляемый тип не подходит по той или иной причине.
Я все таки склонен считать такое костылем, если приведете пример, где это действительно оправдано — можем подискутировать с удовольствием. В Swift это было оправдано в первую очередь тем что все строилось на основе библиотек написанных на Objective-C и переписывать их все было бы очень долго и затратно. Тут же такого легаси пытаются избежать — и правильно делают как по мне. Хотя частично похожего поведения как Type! можно добиться через late
А мне синтаксис Swift с записью не null переменной в новую переменную нравится больше:
if let x = nilX { }

При этом можно использовать и вариант x = x, чтобы не плодить новых переменных:
if let x = x { }


Странно почему в Swift это было с первой версии, а в Dart начинают добавлять только сейчас, язык-то достаточно молодой.
Мне, как iOS-нику со стажем, тоже такой подход кажется очевиднее — без магии. Но почему именно так у них работает я попытался разобраться вот в этом докладе youtu.be/LxMXFhw0-ms
Почему не сделали сразу — наверно потому же, почему в автомобилях ремни безопасности обязали использовать только после 1957-го года (судя по википедии), пришло осознание необходимости видимо ;)
Antol Спасибо за перевод и за сравнение 3х языков. Скинь пожалуйста список ссылок из конца вашей презентации, на которую ты ссылался.
благодарю =)

А не расскажете SQL-щику - в чем проблема с нуллами? Неужели так сложно использовать пустой объект? В SQL никому и в голову не придёт устраивать такие пляски вокруг отсутствия чего-либо. Ну нет и нет, велика беда... Взять математику - там есть понятие пустого множества.

Суть проблемы как раз в том что это касается всех типов. Вот касательно математики - представьте что у вас в формуле "y=x*2" сам x может быть числом, а может не быть вообще - как это обрабатывать? Математика, как в итоге и языки программирования, пришли к мнению что нужен отдельный "тип" - как раз пустое множество. Нул в правильной обработке в общем похож. Так что проблема не в нул как таковом, а скорее в том как это было реализовано до Null-Safety - вообще не по-математичному (если так фамильярно это можно упростить конечно)

Спасибо!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории