Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика XCode

Разработчик

Swift язык программирования

iBook
На этой странице

Операторы

В Swift существует два вида операторов: простые операторы и операторы управления. Простые операторы наиболее распространены и состоят или из выражения или из объявления. Операторы управления используются для управления потоком выполнения в программе. Существует три типа операторов управления в Swift: инструкции циклов, операторы ветвления, и проверяют утверждения передачи.

Инструкции циклов позволяют блоку кода неоднократно выполняться, операторы ветвления позволяют определенному блоку кода выполняться только, когда определенные условия соблюдены и проверяют утверждения передачи, обеспечивают способ изменить порядок, в котором выполняется код. Каждый тип оператора управления описан подробно ниже.

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

Грамматика оператора

оператор выражение -выберите -

оператор объявление -выберите -

оператор оператор цикла -выберите -

оператор оператор ответвления -выберите -

оператор маркированный оператор -выберите -

оператор оператор передачи управления -выберите -

операторы «операторы оператора выбирают»

Инструкции циклов

Инструкции циклов позволяют блоку кода неоднократно выполняться, в зависимости от условий, указанных в цикле. Swift имеет четыре инструкции циклов: a for оператор, a for-in оператор, a while оператор и a do-while оператор.

Поток управления в инструкции циклов может быть изменен a break оператор и a continue оператор и обсужден в Операторе завершения, и Продолжайте Оператор ниже.

Грамматика инструкции циклов

инструкция циклов для оператора -

инструкция циклов для в операторе -

инструкция циклов в-то-время-как-оператор -

инструкция циклов «делает в то время как оператор»

Для оператора

A for оператор позволяет блоку кода неоднократно выполняться при постепенном увеличении счетчика, поскольку долго в качестве одного из условий остается истиной.

A for оператор имеет следующую форму:

  • for initialization; condition; increment {
  •     statements
  • }

Точки с запятой между инициализацией, условием и инкрементом требуются. Фигурные скобки вокруг операторов в организации цикла также требуются.

A for оператор выполняется следующим образом:

  1. Инициализация оценена только один раз. Это обычно используется, чтобы объявить и инициализировать любые переменные, которые необходимы для остатка от цикла.

  2. Выражение условия оценено.

    Если true, программа выполняет операторы, и выполнение продолжается к шагу 3. Если false, программа не выполняет операторы или инкрементное выражение, и программа закончена, выполнившись for оператор.

  3. Инкрементное выражение оценено, и выполнение возвращается к шагу 2.

Переменные, определенные в инициализации, допустимы только в рамках for сам оператор.

Значение выражения условия должно иметь тип, соответствующий BooleanType протокол.

Грамматика для оператора

для оператора for­for-init-opt-«выражение выбирает»«выражение выбирает блок кода»

для оператора for­for-init-opt-«выражение выбирает»«выражение выбирает»блок кода -

Для - в операторе

A for-in оператор позволяет блоку кода выполняться один раз для каждого элемента в наборе (или любой тип), который соответствует SequenceType протокол.

A for-in оператор имеет следующую форму:

  • for item in collection {
  •     statements
  • }

generate() метод вызывают по выражению набора для получения значения типа генератора — т.е. тип, соответствующий GeneratorType протокол. Программа начинает выполнять цикл путем вызова next() метод на потоке. Если значение возвратилось, не None, это присваивается образцу элемента, программа выполняет операторы, и затем продолжает выполнение в начале цикла. Иначе, программа не выполняет присвоение или выполняет операторы, и это закончено, выполнившись for-in оператор.

Грамматика для - в операторе

для в операторе for­образец -in­блок кода выражения -

В то время как оператор

A while оператор позволяет блоку кода неоднократно выполняться, поскольку долго в качестве одного из условий остается истиной.

A while оператор имеет следующую форму:

  • while condition {
  •     statements
  • }

A while оператор выполняется следующим образом:

  1. Условие оценено.

    Если true, выполнение продолжается к шагу 2. Если false, программа закончена, выполнившись while оператор.

  2. Программа выполняет операторы, и выполнение возвращается к шагу 1.

Поскольку значение условия оценено, прежде чем операторы выполняются, операторы в a while оператор может быть выполнен нуль или больше раз.

Значение условия должно иметь тип, соответствующий BooleanType протокол. Условие может также быть дополнительным обязательным объявлением, как обсуждено в Дополнительной Привязке.

Грамматика некоторое время оператора

в-то-время-как-оператор while­«в то время как блок кода условия»

в-то-время-как-условие выражение - «выражение выбирает дополнительный обязательный список»

Сделайте - в то время как оператор

A do-while оператор позволяет блоку кода выполняться один или несколько раз, поскольку долго в качестве одного из условий остается истиной.

A do-while оператор имеет следующую форму:

  • do {
  •     statements
  • } while condition

A do-while оператор выполняется следующим образом:

  1. Программа выполняет операторы, и выполнение продолжается к шагу 2.

  2. Условие оценено.

    Если true, выполнение возвращается к шагу 1. Если false, программа закончена, выполнившись do-while оператор.

Поскольку значение условия оценено после того, как операторы выполняются, операторы в a do-while оператор выполняется, по крайней мере, один раз.

Значение условия должно иметь тип, соответствующий BooleanType протокол. Условие может также быть дополнительным обязательным объявлением, как обсуждено в Дополнительной Привязке.

Грамматика - в то время как оператор

«сделайте в то время как оператор » → do­блок кода -while­выражение -

Операторы ветвления

Операторы ветвления позволяют программе выполнять определенные части кода в зависимости от значения одного или более условий. Значения условий указали в управлении оператором ветвления, как программа переходит и, поэтому, какой блок кода выполняется. Swift имеет два оператора ветвления: if оператор и a switch оператор.

Поток управления в a switch оператор может быть изменен a break оператор и обсужден в Операторе завершения ниже.

Грамматика оператора ветвления

оператор ветвления если-оператор -

оператор ветвления оператор переключателя -

Если оператор

if оператор используется для выполнения кода на основе оценки одного или более условий.

Существует две канонических формы if оператор. В каждой форме требуются открытие и закрывающие фигурные скобки.

Первая форма позволяет коду выполняться только, когда условие является истиной и имеет следующую форму:

  • if condition {
  •     statements
  • }

Вторая форма if оператор обеспечивает дополнительное выражение else (представленный else ключевое слово), и используется для выполнения одной части кода, когда условие является истиной и другой частью кода, когда то же условие является ложью. Когда единственное выражение else присутствует, if оператор имеет следующую форму:

  • if condition {
  •     statements to execute if condition is true
  • } else {
  •     statements to execute if condition is false
  • }

Выражение else if оператор может содержать другого if оператор для тестирования больше чем одного условия. if оператор, объединенный в цепочку вместе таким образом, имеет следующую форму:

  • if condition 1 {
  •     statements to execute if condition 1 is true
  • } else if condition 2 {
  •     statements to execute if condition 2 is true
  • } else {
  •     statements to execute if both conditions are false
  • }

Значение любого условия в if оператор должен иметь тип, соответствующий BooleanType протокол. Условие может также быть дополнительным обязательным объявлением, как обсуждено в Дополнительной Привязке.

Грамматика, если оператор

оператор «if» if­«если выбирает блочное выражение else кода условия»

если-условие выражение - «выражение выбирает дополнительный обязательный список»

выражение else else­блок кода - else­если-оператор -

Оператор переключения

A switch оператор позволяет определенным блокам кода выполняться в зависимости от значения выражения управления.

A switch оператор имеет следующую форму:

  • switch control expression {
  • case pattern 1:
  •     statements
  • case pattern 2 where condition:
  •     statements
  • case pattern 3 where condition,
  • pattern 4 where condition:
  •     statements
  • default:
  •     statements
  • }

Выражение управления switch оператор оценен и затем по сравнению с образцами, указанными в каждом случае. Если соответствие найдено, программа выполняет операторы, перечисленные в рамках того случая. Объем каждого случая не может быть пустым. В результате необходимо включать по крайней мере один оператор после двоеточия (:) из каждой метки случая. Используйте сингл break оператор, если Вы не намереваетесь выполнить какой-либо код в организации соответствующего случая.

Значения выражений, на которых может перейти Ваш код, очень гибки. Например, в дополнение к значениям скалярных типов, таким как целые числа и символы, Ваш код может перейти на значениях любого типа, включая числа с плавающей точкой, строки, кортежи, экземпляры пользовательских классов и optionals. Значение выражения управления может даже быть соответствующим к значению случая в перечислении и проверено на включение в указанный диапазон значений. Для примеров того, как использовать эти различные типы значений в switch операторы, посмотрите Переключатель в главе Потока управления.

A switch случай может дополнительно содержать защитное выражение после каждого образца. Защитное выражение представлено ключевым словом where сопровождаемый выражением, и используется для обеспечения дополнительного условия, прежде чем образец в случае будут считать соответствующим к выражению управления. Если защитное выражение присутствует, операторы в соответствующем случае выполняются, только если значение выражения управления соответствует один из образцов случая, и защитное выражение оценивает к true. Например, выражение управления соответствует случай в примере ниже, только если это - кортеж, содержащий два элемента того же значения, такой как (1, 1).

  • case let (x, y) where x == y:

Поскольку вышеупомянутый пример показывает, образцы в случае могут также связать константы с помощью ключевого слова let (они могут также связать переменные с помощью ключевого слова var). На эти константы (или переменные) можно тогда сослаться в соответствующем защитном выражении и всюду по остальной части кода в рамках случая. Однако если случай содержит многократные образцы, соответствующие выражение управления, ни один из тех образцов не может содержать постоянные или привязки переменных.

A switch оператор может также включать случай по умолчанию, представленный ключевым словом default. Код в случае по умолчанию выполняется, только если никакие другие случаи не соответствуют выражение управления. A switch оператор может включать только один случай по умолчанию, который должен появиться в конце switch оператор.

Несмотря на то, что фактический порядок выполнения операций сопоставления с образцом, и в частности порядок оценки образцов в случаях, являются неуказанным, сопоставлением с образцом в a switch оператор ведет себя, как будто оценка выполняется в исходном порядке — т.е. порядке, в котором они появляются в исходном коде. В результате, если многократные случаи содержат образцы, которые оценивают к тому же значению, и таким образом могут соответствовать значение выражения управления, программа выполняет только код в первом случае соответствия в исходном порядке.

Операторы переключения должны быть исчерпывающими

В Swift каждое возможное значение типа выражения управления должно соответствовать значение по крайней мере одного образца случая. Когда это просто не выполнимо (например, когда тип выражения управления Int), можно включать случай по умолчанию для удовлетворения требования.

Выполнение не проваливается случаи неявно

После того, как код в соответствующем случае закончил выполняться, выходы программы от switch оператор. Реализация программы не продолжается или «проваливается» к следующему случаю или случаю по умолчанию. Однако если Вы хотите, чтобы выполнение продолжалось от одного случая до следующего, явно включайте a fallthrough оператор, просто состоящий из ключевого слова fallthrough, в случае, от которого Вы хотите, чтобы продолжалось выполнение. Для получения дополнительной информации о fallthrough оператор, см. Оператор Fallthrough ниже.

Грамматика оператора переключения

оператор переключения switch­выражение -«случаи переключателя выбирают»

случаи переключателя «случаи переключателя случая переключателя выбирают»

случай переключателя операторы метки случая - операторы метки по умолчанию -

случай переключателя метка случая - метка по умолчанию -

метка случая case­список элемента случая -

список элемента случая «защитный пункт образца выбирает» «защитный пункт образца, выбирают» список элемента случая -

метка по умолчанию default­

защитный пункт where­защитное выражение -

защитное выражение выражение -

Помеченный оператор

Можно снабдить префиксом инструкцию циклов или a switch оператор с меткой оператора, состоящей из имени метки, сопровождаемой сразу двоеточием (:). Используйте метки оператора с break и continue операторы, чтобы быть явным о том, как Вы хотите к потоку контроля изменений в инструкции циклов или a switch оператор, как обсуждено в Операторе завершения и Продолжает Оператор ниже.

Объем помеченного оператора является всем оператором после метки оператора. Можно вложить помеченные операторы, но имя каждой метки оператора должно быть уникальным.

Для получения дополнительной информации и видеть примеры того, как использовать метки оператора, посмотрите Помеченные операторы в главе Потока управления.

Грамматика помеченного оператора

Проверьте утверждения передачи

Проверьте утверждения передачи, может изменить порядок, в котором код в Вашей программе выполняется путем безусловной передачи программного управления от одной части кода другому. Swift имеет четыре, проверяют утверждения передачи: a break оператор, a continue оператор, a fallthrough оператор и a return оператор.

Грамматика управления передает оператор

оператор передачи управления оператор повреждения -

оператор передачи управления продолжать-оператор -

оператор передачи управления fallthrough-оператор -

оператор передачи управления оператор возврата -

Оператор завершения

A break оператор заканчивает реализацию программы цикла или a switch оператор. A break оператор может состоять из только ключевого слова break, или это может состоять из ключевого слова break сопровождаемый именем метки оператора, как показано ниже.

  • break
  • break label name

Когда a break оператор сопровождается именем метки оператора, это заканчивает реализацию программы цикла или switch оператор называет та метка.

Когда a break оператор не сопровождается именем метки оператора, это заканчивает реализацию программы switch оператор или самая внутренняя инструкция циклов включения, в которой это происходит.

В обоих случаях программное управление тогда передается первой строке кода после цикла включения или switch оператор, если таковые имеются.

Для примеров того, как использовать a break оператор, посмотрите Операторы завершения и Помеченные операторы в главе Потока управления.

Грамматика оператора завершения

оператор завершения break­«имя метки выбирает»

Продолжайте оператор

A continue оператор заканчивает реализацию программы текущей итерации инструкции циклов, но не останавливает выполнение инструкции циклов. A continue оператор может состоять из только ключевого слова continue, или это может состоять из ключевого слова continue сопровождаемый именем метки оператора, как показано ниже.

  • continue
  • continue label name

Когда a continue оператор сопровождается именем метки оператора, это заканчивает реализацию программы текущей итерации инструкции циклов, названной той меткой.

Когда a continue оператор не сопровождается именем метки оператора, это заканчивает реализацию программы текущей итерации самой внутренней инструкции циклов включения, в которой это происходит.

В обоих случаях программное управление тогда передается условию инструкции циклов включения.

В a for оператор, инкрементное выражение все еще оценено после continue оператор выполняется, потому что инкрементное выражение оценено после выполнения организации цикла.

Для примеров того, как использовать a continue оператор, посмотрите, Продолжаются и Помеченные операторы в главе Потока управления.

Грамматика продолжать оператора

продолжать-оператор continue­«имя метки выбирает»

Оператор Fallthrough

A fallthrough оператор состоит из fallthrough ключевое слово и происходит только в блоке случая a switch оператор. A fallthrough оператор заставляет реализацию программы продолжаться от одного случая в a switch оператор к следующему случаю. Даже если образцы метки случая не соответствуют значение, реализация программы продолжается к следующему случаю switch выражение управления оператора.

A fallthrough оператор может появиться где угодно внутри a switch оператор, не так же, как последний оператор блока случая, но это не может использоваться в заключительном блоке случая. Это также не может передать управление в блок случая, образец которого содержит значение обязательные образцы.

Для примера того, как использовать a fallthrough оператор в a switch оператор, посмотрите, Проверяют Утверждения Передачи в главе Потока управления.

Грамматика fallthrough оператора

fallthrough-оператор fallthrough­

Оператор возврата

A return оператор происходит в организации функции или определения метода и заставляет реализацию программы возвращаться к функции вызова или методу. Реализация программы сразу продолжается в точке после вызова функции или вызова метода.

A return оператор может состоять из только ключевого слова return, или это может состоять из ключевого слова return сопровождаемый выражением, как показано ниже.

  • return
  • return expression

Когда a return оператор сопровождается выражением, значение выражения возвращается к функции вызова или методу. Если значение выражения не соответствует значение типа возврата, объявленного в объявлении функции или объявлении метода, значение выражения преобразовывается в тип возврата, прежде чем это будет возвращено к функции вызова или методу.

Когда a return оператор не сопровождается выражением, он может использоваться только для возврата из функции или метода, не возвращающего значение (т.е. когда тип возврата функции или метода Void или ()).

Грамматика оператора возврата

оператор возврата return­«выражение выбирает»