Я загрузил вчера последнюю версию Xcode 8.0 и, следовательно, Swift 3. Первое, что я сделал, это попытка обновить мой проект для Swift 3, и я чуть не заплакал. Одним из самых серьезных изменений является (по моему мнению) новое управление структурой Swifts Range
, особенно потому, что автоматическое преобразование в текущий синтаксис Swift ничего не делает с диапазонами.
Range
разделяется на Range
, CountableRange
, ClosedRange
и CountableClosedRange
, что имеет смысл при рассмотрении того, что теперь возможно при использовании диапазонов (хотя это в основном довольно ненужно).
Однако: у меня есть много функций, принимающих параметр Range<Int>
или возвращающий Range<Int>
. Проблема заключается в следующем: я назвал эти функции 0..<5
например или 0...4
(потому что он иногда семантически более экспрессивный). Конечно, я мог бы просто настроить такие вещи. Но почему не все эти типы диапазонов имеют общий интерфейс? Мне пришлось бы перегружать каждую функцию для каждого из этих типов диапазонов, и каждый раз они выполняли бы те же самые операции.
Есть ли еще какие-либо рекомендации по использованию диапазонов в Swift 3?