Избегаем C-Style в циклах

И

«C-style for statement is deprecated» — знакомое предупреждение? На самом деле ничего страшного в нем нет, и слово «deprecated» означает лишь то, что то, что этим словом обозначено то что устарело и в будущих версиях языка будет исключено окончательно. C-style для циклов будет удален в Swift 3. На первый взгляд это может показаться странным, но  Swift имеет некоторые особенности, которые позволят сделать структуру циклов несколько лучше.

C-Style для циклов

Давайте для начала посмотрим, что же такое C-стиль для циклов:

Это работает, но это не очень удобно и не очень «Swifty». На самом деле такое даже не очень легко учить и запоминать.

For-in в цикле

For-in цикл обеспечивает достаточную функциональность, что бы достичь того же результата. Давайте взглянем на более простой вариант:

Он работает, но у него есть один недостаток: у вас нет доступа к индексу (i). Однако, мы можем решить эту проблему с помощью кортежа и функции enumerate():

Теперь у нас есть все что нам нужно! На мой взгляд, этот синтаксис гораздо легче читать, чем синтаксис в C-стиле.

Но что насчет словарей? Здесь вы также можете использовать очень простой синтаксис:

В данном случае даже не нужно вызывать метод словаря. Вы просто используете for-in в сочетании с кортежем.

Swift 3

Конечно, могут возникнуть споры по поводу целесообразности того, что в Swift 3 С-циклы будут удалены. С одной стороны, вам придется реорганизовывать существующий код, и у вас  больше не будет выбора. Но с другой стороны, это заставит разработчиков исользовать синтаксис, который просто лучше. Поэтому, как мне кажется, это хороший шаг.

Кстати, недавно мы публиковали статью о будущем Swift 3 в контексте WWDC 2016.

А что вы думаете об этом? Хороша ли идея удаления С-циклов из Swift 3? Оставляйте свои мысли в комментариях!

Поддержите ресурс blog.justDev:

Сведения об авторе

Игорь Малеваный

1 комментарий

  • На мой взгляд, синтаксис

    for var i = 0; i < programmingLanguages.count; i++ {
    print("index: \(i), value: \(programmingLanguages[i])")
    }
    трудночитаемый. А этот синтаксис

    for language in programmingLanguages {
    print("value: \(language)")
    }

    выглядит очень здорово

Instagram

Поддержите ресурс blog.justDev:

Свежие записи

Рубрики