Я следил за развитием Swift 3, и теперь, когда мы приближаемся к его выпуску, я оглянулся на то, что было достигнуто в предстоящем выпуске.
Наглядный обзор текущего состояния Swift 3 можно найти на Странице статуса предложения по эволюции Swift.
Итак, без лишних слов, вот изменения в Swift 3, которые меня больше всего волнуют.
SE-0099 — Условия реструктуризации
Этот! Тысячу раз это!
В прошлом у меня было так много возможностей использовать одно простое, читаемое «защитное» выражение, связанное с предложением «где», и отбрасывать его, потому что компилятор просто не понял моего намерения. Все сводилось к сложным и часто запутанным правилам работы условных предложений. (на самом деле, я должен винить не компилятор, а себя ;))
SE-0117 — Разрешить различать публичный доступ и публичную переопределяемость.
На первый взгляд это казалось довольно «грязным» решением проблемы, с которой я тоже столкнулся, работая над быстрым фреймворком. Но, в конце концов, он выполняет свою работу, то есть дает мне, как разработчику, инструменты, необходимые мне для создания понятного и красивого API.
Тем не менее, я ожидаю, что Swift 4 продолжит работу в этой области.
SE-0046 — установить согласованное поведение меток по всем параметрам, включая первые метки.
Как я упомянул ранее, мой подход к этому таков: принудительно использовать метку первого параметра. Swift 3 сделает это поведением по умолчанию. #nomoretwofoldfirstparameterlabelsinswif ;)
SE0086 — удаление префикса NS в Swift Foundation, SE0005 — улучшенный перевод API-интерфейсов Objective-C в Swift
Эти два действительно заставляют код Swift сиять!
И чтобы объяснить, почему и как, я бы хотел, чтобы вы посмотрели это видео WWDC16:
Просто взгляните на пример CoreGraphics — оба эти предложения по развитию имеют огромное влияние и, похоже, работают правильно.
Удачного стрижа!