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

13.Сұрақ. Кортежи в операторе switch

Вы можете использовать кортежи для проверки нескольких значений в одном switch. Каждый элемент кортежа может быть сравнён с разными значениями или интервалами значений. Используйте символ нижнего подчёркивания (_) (wildcard) для сравнения с любым возможным значением.

Кортеж представляет собой упорядоченный список из двух или более значений. Например:

let flight = (747, "SFO")

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

Вы можете получить доступ к значениям кортежа с помощью индекса:

print(flight.1)

// Output: SFO

Также можно использовать значения кортежа:

let flight = (airplane: 747, airport: "SFO")

print(flgith.airplane)

// Output: 747

Мы можем использовать кортежи вместе с оператором switch:

for i in 1...100 {

switch (i % 3 == 0, i % 5 == 0) {

case (true, false):

print("Fizz")

case (false, true):

print("Buzz")

case (true, true):

print("FizzBuzz")

default:

print(i)

}

}

В приведенном выше коде мы создаем кортеж из двух значений: результат вычисления i % 3 == 0 и результат вычисления i % 5 == 0. Теперь мы можем учитывать различные значения кортежей: (true, false), (false, true), (true, true). Если ни один из этих случаев не совпадает, мы выводим значение i.

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

let airplane = (type: "737-800", heading: "LAX")

 

switch airplane {

case ("737-800", _):

print("Этот самолет модели 737-800.")

case (let type, "LAX"):

print("Этот \(type) летит в аэропорт Лос-Анджелеса.")

default:

print("Неизвестный самолет.")

}

 

// Этот самолет модели 737-800.

В приведенном выше коде мы отвечаем 3 разных случая.

Выражение let type называется связыванием значения. Это позволяет нам привязать значение кортежа к константе. Теперь внутри case блока вы можете использовать эту константу, например, распечатать ее.

14. Последовательности. Коллекции. Массивы: способы создания массива. Доступ к элементам массива. Явное и неявное указание типа элементов массива.

Последовательность (Sequence) — набор элементов, выстроенных в очередь, в котором есть возможность осуществлять последовательный (поочередный) доступ к ним. При этом не предусмотрен механизм, позволяющий обратиться к какому-либо определенному элементу. Вы, как было сказано выше, можете лишь последовательно перебирать элементы последовательности. Sequence — это название протокола в Swift, который определяет требования к последовательностям. Если какой-либо тип данных принимает к реализации протокол (выполняет его требования), то значение этого типа (экземпляр) можно назвать последовательностью. Протокол Sequence требует, чтобы тип данных обеспечивал хранение множества однотипных значений и организовывал последовательный доступ к ним с помощью последовательного перебора. Коллекция (Collection) — это последовательность (Sequence), в которой можно обращаться к отдельному элементу напрямую. Другими словами, Collection — это протокол, основанный на протоколе Sequence, который при этом имеет дополнительное требование по обеспечению прямого доступа к элементам. Помимо этого, коллекция не может быть бесконечной (в отличие от Sequence). Для доступа к элементам коллекции используются индексы (indicies). Они могут быть представлены как в виде обычного числового значения (порядковый номер элемента), так и в виде более сложных структур (как, например, в словарях или строках, но об этом поговорим позже). На рис. 7.5 приведена упрощенная схема классификации рассмотренных протоколов и их требований.

Рис. 7.5. Классификация протоколов и их требования

В будущем вы научитесь создавать собственные типы данных, основанные на последовательностях и коллекциях. А сейчас необходимо уделить особое внимание информации, находящейся в этой части книги, так как приведенный материал достаточно важен и будет регулярно использоваться в будущем.

Массивы: способы создания массива.

Создание массива с помощью литерала

Значение массива задается с помощью литерала массива, в котором через запятую перечисляются значения элементов

СИНТАКСИС [значение_1, значение_2, ..., значение_N]

• значение: Any — значение очередного элемента массива, может быть произвольного типа данных. Литерал массива возвращает массив, состоящий из N элементов, значения которых имеют один и тот же тип данных. Литерал обрамляется квадратными скобками, а значения элементов в нем отделяются друг от друга запятыми. Массив может содержать любое количество элементов одного типа. Тип данных значений — произвольный, определяется вами в соответствии с контекстом задачи. Индексы элементов определяются автоматически в зависимости от порядка следования элементов.

Пример [1,1,2,3,5,8,12] В данном примере тип данных значения каждого элемента массива — Int. Массив имеет 7 элементов. Первые два (с индексами 0 и 1) имеют одинаковые значения — 1. Значение последнего элемента массива с индексом 6 равно 12.

Создание массива с помощью Array(arrayLiteral:)

Для создания массива помимо передачи литерала массива можно использовать специальные глобальные функции, одной из которых является Array(arrayLiteral:).

СИНТАКСИС Array(arrayLiteral: значение_1, значение_2, ...,значение_N)

• значение: Any — значение очередного элемента массива, может быть произвольного типа данных. Функция возвращает массив, состоящий из N элементов, значения которых имеют один и тот же тип данных. Значения произвольного типа передаются в виде списка в качестве входного параметра arrayLiteral. Каждое значение отделяется от последующего запятой.

Пример Array(arrayLiteral: 1, 1, 2, 3, 5, 8, 12)

В данном примере в результате выполнения функции будет возвращен массив, состоящий из 7 целочисленных элементов.

Создание массива с помощью Array(_:)

Также для создания массива можно использовать глобальную функцию Array(_:), которой в качестве входного аргумента необходимо передать произвольную последовательность (Sequence).

СИНТАКСИС Array(последовательность_значений)

• последовательность_значений: Sequence — последовательность элементов, которая будет преобразована в массив. Функция возвращает массив, состоящий из элементов, входящих в переданную последовательность. Последовательность значений, переданная в функцию.

  1. Сұрақ. Создание пустого массива. Сравнение, слияние массивов. Многомерные массивы.

Создание пустого массива

Массив может иметь пустое значение, то есть не иметь элементов (это словно строка без символов). Для создания пустого массива можно использовать один из следующих способов:

  • явно указать тип создаваемого массива и передать ему значение [];

  • использовать специальную функцию [типДанных](), где типДанных определяет тип значений элементов массива.

Сравнение массивов

Массивы, так же как и значения фундаментальных типов данных, можно сравнивать друг с другом. Два массива являются эквивалентными:

  • ‰если количество элементов в сравниваемых массивах одинаково;

  • ‰ если каждая соответствующая пара элементов эквивалентна (имеет одни и те же типы данных и значения).

Слияние массивов

Со значением массива, как и со значениями фундаментальных типов данных, можно проводить различные операции. Одной из них является операция слияния, при которой значения двух массивов сливаются в одно, образуя новый массив. Обратите внимание на несколько моментов:

  • ‰ результирующий массив будет содержать значения из обоих массивов, но индексы этих значений могут не совпадать с родительскими;

  • ‰ значения элементов подлежащих слиянию массивов должны иметь один и тот же тип данных.

Многомерные массивы

Элементами массива могут быть значения не только фундаментальных типов, но и любых других типов данных, включая сами массивы. Массивы, элементами которых также являются массивы, называются многомерными. Необходимо обеспечить единство типа всех вложенных массивов

16.Базовые свойства и методы массивов

Массивы — очень функциональные элементы языка. Об этом позаботились разработчики Swift, предоставив набор свойств и методов, позволяющих значитель. Для редактирования массива также можно использовать методы dropFirst(_:) и dropLast(_:), возвращающие новый массив, в котором отсутствует несколько первых или последних элементов, но при этом не изменяющие исходную коллекцию. Если в качестве входного аргумента ничего не передавать, то из результата удаляется один элемент, в противном случае — столько элементов, сколько передано.

ПРИМЕЧАНИЕ Разработчики Swift с умом подошли к именованию доступных методов. В большинстве случаев если какой-либо метод заканчивается на –ed, то он, не трогая исходное значение, возвращает его измененную копию. Аналогичный метод без –ed на конце модифицирует саму последовательность.

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