Swift switch оператор ветвления

Описание:

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

 

Синтаксис оператора switch в swift

 

switch проверяемое_выражение {
case значение1:
код1
case значение2, значение3:
код2
...
case значениеM:
break
default:
кодN
}

 

Оператор switch, также называемый конструкцией switch-case, после вычисления переданного выражения производит поиск полученного значения среди указанных после ключевых слов case
Количество блоков case может быть произвольным. После каждого ключевого слова case может быть указано любое количество значений, которые отделяются друг от друга запятыми Указания на значения заканчиваются символом двоеточия, после которого следует блок исполняемого кода

Предположим, что проверяемое выражение вернуло значение, соответствующее значению 1 В этом случае происходит выполнение первого блока кода Если ни один из операторов case не имеет совпадения с искомым значением, то выполняется N-й блок кода, находящийся после ключевого слова default. Данное ключевое слово содержит код, выполняемый в том случае, когда не найдено ни одного совпадения в блоках case Он подобен оператору else в конструкции if-else Блок default должен всегда располагаться последним в конструкции switch-case Тело конструкции switch-case обрамляется фигурными скобками точно так же, как в конструкции if-else обрамлялись отдельные блоки кода.
В конце каждого блока case нет необходимости ставить оператор break, как этого требуют другие языки программирования Данный оператор ставится только в том случае, если блок case или default не содержит выполняемого кода.

 

Конструкция switch-case должна быть исчерпывающей, то есть содержать информацию обо всех возможных значениях проверяемого параметра. Это обеспечивается в том числе наличием блока default Если данный блок не должен содержать никакого исполняемого кода, то просто расположите в нем оператор break.

Оператор switch в Swift является одним из самых совершенных среди подобных операторов языков программирования. Его можно использовать для любых типов данных, объектов и даже кортежей. Он предоставляет поистине замечательные возможности для создания кода. Например, чтобы указать сразу на множество числовых значений, в качестве значения в блоках case можно использовать операторы
 

 

Пример конструкции switch в swift

 

var years = 34

switch years {

case 0...1  :print("Ваш период жизни - Младенчество")

case 2...3  :print("Ваш период жизни - Раннее детство")

case 4...6  :print("Ваш период жизни - Дошкольный возраст")     

case 7...12 :print("Ваш период жизни - Школьный возраст")

case 13...19:print("Ваш период жизни - Юность")

case 20...35:print("Ваш период жизни - Молодость")

case 35...60:print("Ваш период жизни - Зрелость")

default     :print("Ваш период жизни - Старость")

}

print("Ваш период жизни - Молодость")

 

Операторы передачи управления меняют последовательность исполнения вашего кода, передавая управление от одного фрагмента кода другому. В Swift есть четыре оператора передачи управления:

·        continue

·        break

·        fallthrough

·        return

 

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

 

Fallthrough используется в случаях требуется не завершать работу конструкции switch-case, а перейти к выполнению кода в следующем блоке case.

/* переменная типа Character

 содержит уровень

 готовности */

 var level: Character = "Б"

 // определение уровня готовности

switch level {

case "А":

 print("Выключить все электрические приборы ")

fallthrough

 case "Б":

 print("Закрыть входные двери и окна ")

 fallthrough

 case "В":

 print("Соблюдать спокойствие")

 default:

 break

 }

 

Консоль:

Закрыть входные двери и окна
Соблюдать спокойствие

 

Ключевое слово where

 

С помощью блоков case вы определяете возможные значения, которые может принять выражение. В одном блоке case можно определить даже несколько возможных значений. Однако Swift позволяет в пределах одного блока case указать не только на значение рассматриваемого параметра, но и на зависимость от какого-либо условия. Данный функционал реализуется с помощью ключевого слова where в блоке case.
Рассмотрим пример. Нужно создать наборы куриных яиц для отправки магазин, набор должен включать яйца одного цвета и размера.

Для решения возникшей проблемы создадим одну конструкцию switch-case и используем ключевое слово where

 

/* переменная типа Int

 содержит вес яйца */

 var eggWeight = 70

 /* переменная типа

 содержит цвет яйца */

 var eggsColor = "white"

 // определение загона для поступившего дракона

 switch eggsColor {

  case "white" where   eggWeight >= 75:

 print("Набор белое яйцо высшей категории")

 case "coolor" where eggWeight >= 75:

 print("Набор цветное яйцо высшей категории")

 case "white" where   eggWeight > 65 && eggWeight < 75:

 print("Набор белое яйцо отборное")

 case "coolor" where eggWeight > 65 && eggWeight < 75:

 print("Набор цветное яйцо отборное")

  print("Набор цветное яйцо высшей категории")

 case "white" where   eggWeight > 55 && eggWeight < 64:

 print("Набор белое яйцо первой категории")

 case "coolor" where eggWeight > 55 && eggWeight < 64:

 print("Набор цветное яйцо первой категории")

 default:

 break

 }

Консоль:

Набор белое яйцо отборное

 

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

Код в блоке case выполняется, когда найдено совпадающее значение и условие where вернуло true.

 

Кортежи в операторе switch

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

 

/* кортеж типа (String, Int)

 содержит цвет и вес яйца */

 var eggsCharacteristic = ("collor", 70)

 // определение набор для поступившего яйца

 switch  eggsCharacteristic {

 case ("collor", 75):

 print("Набор цветное яйцо высшей категории")

 case ("white", 75):

 print("Набор белое яйцо высшей категории")

 case ("collor", let weight) where weight  > 65 && weight < 75:

 print("Набор цветное яйцо отборное")

 case ("white", let weight) where weight  > 65 && weight < 75:

print("Набор белое яйцо отборное")

default:

 print("Яйцо с неизвестными параметрами")

 }

 

 

Категория Технические науки лекции / Swift язык программирования iOS
Дата размещения21.09.2016
Количество просмотров47
Статью добавил пользователь Diplom
Пожаловаться на публикацию
Еще статьи из данной категории
Предыдущие статьи Следующие статьи
Комментарии к публикации
Комментариев к публикации нет...
Поиск статей в каталоге
расширенный поиск статей
Категории каталога статей
Общественные и гуманитарные науки лекции
Лекций по бухгалтерскому учету
Лекции реклама
Лекции по аудиту
Экономика организации предприятия лекции
Конспект лекций по экономике
Лекции по социологии
Стратегическое планирование лекции
Лекции по бжд для вузов
Социальная антропология учебник
Лекции по pr
Государственное регулирование экономики учебник
Музыковедение
Лекции по этнологии и этнографии
Методика преподавания биологии
Музееведение
Философия лекции
Политология лекции
Менеджмент и управление
Труд и занятость
Русский язык и культура речи
Лекции по праву
Лекции по истории
Новости сайта
  • 01.09.2016
    Поздравляем всех кто учиться и всех кто учить с началом учебного сезона.
  • 01.06.2016
    Поздравляем с началом лета и каникулами всех учащихся и преподавателей!
  • 01.05.2016
    Поздравляем посетителей нашей доски объявлений и образовательного портала с наступающими майскими праздниками: Днем Труда и Днем Победы!
  • 08.03.2016
    Поздравляем с праздником Весны. Желаем весеннего настроения, счастья, радости и красоты.
  • 23.02.2016
    Дорогие мужчины! Женская половина нашего коллектива поздравляем мужчин с Днём защитника отечества!
Статистика каталога статей
Всего статей: 3214
Добавлено сегодня: 0
Добавлено вчера: 0
Статистика каталога
Всего объектов: 1016
Добавлено сегодня: 0
Добавлено вчера: 0
Статистика объявлений
Всего объявлений: 658
Добавлено сегодня: 0
Добавлено вчера: 2
Подписка на рассылку
Ваше имя
Ваш Email