Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СЕССИЯ ОТВЕТЫ / iOS сессия ответы.docx
Скачиваний:
21
Добавлен:
25.12.2020
Размер:
14.45 Mб
Скачать

Как проверить, есть ли значение в переменной с опциональным типом данных?

Это сделать достаточно просто: берём оператор сравнения "if" и задаём условие. Спрашиваем: эй, переменная, ты nil или не nil?

Если она отвечает "я сейчас nil, пустая", тогда ничего от неё не требуем. Разве что можно вывести на экран информацию о том, что значение переменной сейчас отсутствует, nil. Назовём это действие чистосердечным признанием! Если же переменная не nil, тогда её можно использовать в последующих действиях. Пример:

if optSample ==nil {

    print ("optSample is nil")

} else {

    print (optSample)

}

В части "if" мы задаём вопрос на проверку: если он положительный, то программа сообщает нам об этом, зажигает красный свет на дальнейшее использование. Если же значение не nil, то мы уже можем выполнять с ним те или иные действия. В данном случае мы просто выводим это имеющееся значение на экран.

Оператор guard называется оператором досрочного выхода . Подобно оператору if он проверяет истинность переданного ему условия . Отличие его в том, что он выполняет код в теле оператора только в том случае, если условие вернуло значение false .

СИНТАКСИС

guard проверяемое_условие else {

// тело оператора

}

После ключевого слова guard следует некоторое проверяемое утверждение.Если утверждение возвращае тtrue,то телооператора игнорируется и управление переходит следующему за guard коду. Если утверждение возвращает false,то выполняется код внутри телаоператора. Для данного оператора существует ограничение:его тело должно содержать один изследующих операторов—return,break,continue,throw.

12* Операторветвления switch. Fallthrough. Where.

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

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

Для этого можно использовать расширенный синтаксис оператора if, многократно повторяя блоки elseif.

СИНТАКСИС

switchпроверяемое_выражение {

case значение_1:

      // первый блок кода

 case значение_2, значение_3:

// второй блок кода

   ...

caseзначение_N:

      // N-й блок кода

default:       

// блок кода по умолчанию

}

• проверяемое_выражение ->Any — вычисляемое выражение, значение которого Swift будет искать среди case-блоков. Может возвращать значение любого типа.

• значение:Any — значение, которое может вернуть проверяемое выражение. Должно иметь тот же тип данных.

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

С помощью ключевого слова fallthrough можно изменить логику функционирования оператора switch и не прерывать его работу после выполнения кода в case-блоке. Данное ключевое слово позволяет перейти к телу последующего case-блока. Рассмотрим следующий пример: представьте, что существует три уровня готовности к чрезвычайным ситуациям — А, Б и В. Каждая степень предусматривает выполнение ряда мероприятий, причем каждый последующий уровень включает в себя мероприятия предыдущих уровней. Минимальный уровень — это В, максимальный — А (включает в себя мероприятия уровней В и Б).

Реализуем программу, выводящую на консоль все мероприятия, соответствующие текущему уровню готовности к ЧС. Так как мероприятия повторяются от уровня к уровню, то можно реализовать задуманное с помощью оператора switch с использованием ключевого слова fallthrough

При значении "Б" переменной level на консоль выводятся строки, соответствующие значениям "Б" и "В". Когда программа встречает ключевое слово fallthrough, она переходит к выполнению кода следующего case-блока.

Ключевое слово where в операторе switch

Представьте, что в задаче про вольеры для драконов появилось дополнительное условие: поместить дракона в вольер № 3 можно только при условии, что в нем находятся менее пяти особей. Для хранения количества драконов будет использоваться дополнительная переменная. Включать в кортеж третий элемент и проверять его значение было бы неправильно с точки зрения логики, так как количество драконов не имеет ничего общего с характеристиками конкретного дракона. С одной стороны, данный функционал можно реализовать с помощью конструкции if-else внутри последнего case-блока, но наиболее правильным вариантом станет использование ключевого слова where, позволяющего указать дополнительные требования, в том числе к значениям внешних параметров

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

Соседние файлы в папке СЕССИЯ ОТВЕТЫ