- •Объявление, инициализация и изменение значения. Виды операторов. Переменные и константы. Виды объектов.
- •Типы данных
- •4. Числовые типы данных. Арифметические операторы. Приведение числовых типов данных.
- •5. Текстовые типы данных. Инициализация строковых значений. Приведение к строковому типу данных. Объединение строк.
- •6. Логические значения. Логические операторы.
- •Как проверить, есть ли значение в переменной с опциональным типом данных?
- •12* Операторветвления switch. Fallthrough. Where.
- •13.Сұрақ. Кортежи в операторе switch
- •Наборы: объявление набора, создание пустого набора, доступ к набору и модификация набора.
- •Оператор while
- •Оператор repeatwhile
- •24 Функции: объявление, синтаксис вызова функции. Примеры.
- •Заметка
- •25.Входные аргументы и возвращаемое значение
- •Глава 15 • Функции 245
- •26 Функция в качестве входного аргумента
- •27.Кортеж в качестве возвращаемого значения
- •28. Функционалдымүмкіндіктер. Функционалдытүрі. Функция аргумент ретінде.
- •29. Күрделіфункционалды тип. Қайтарумәніретінде функция
- •30. Кірістірілгенфункциялар. Функциянышамадантысжүктеу.
- •31. Рекурсивный вызов функций. Безымянные функции.
- •32.Замыкания. Функция как замыкания
- •33. Замыкание.Замыкающие выражение
- •Неявные возвраты из замыканий с одним выражением
- •Сокращенные имена аргументов
- •Создание нового отсортированного массива#
- •Сортировка существующего массива на месте#
- •Сортировка массива с пользовательским заказом#
- •38.Объектно-ориентированное программирование в Swift. Экземпляры
- •43. Собственны еинициализаторы
- •44. Методы в структурах
- •45.Сыныптар құрылымдарға өте ұқсас, бірақ олар бірнеше маңызды нүктелермен ерекшеленеді.
- •Переопределение свойств
- •52.Псевдоним Any.Приведение типа Any.Псевдоним AnyObject
- •53.Инициализаторы
- •54.Деинициализаторы
- •Создание Auto Layout и его составляющих
- •. Понятие Segues. Виды Segues.
- •59. Создание программируемых переходов. (ProgrammaticSeguesiniOs)
- •60 .Передачаданныхмеждуконтроллерами. (Passing Data Between Controllers)
- •Отображение данных в мобильном приложении ввиде списка. Работа с таблицами в iOs (Working With Tables)
- •Понятие делегата и протокола на примере работы с таблицами. Назначение и принцип работы. (Table delegates and protocols)
- •Опциональные протоколы
- •Использование протоколов
- •Делегаты
- •Создание и отображение данных в ячейках (Creating custom table cell)
- •Принципы работы с Core Data (Working With Core Data, Saving to Core Data, Fetching data from Core Data, Deleting items from Core Data)
- •Понятие и назначение rest & crud (Understanding rest & crud)
- •67.Асинхронды
- •68. Создание post запросов (Making post requests)
- •Размеры и другие детали внешнего исполнения[править | править код]
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 — последовательность элементов, которая будет преобразована в массив. Функция возвращает массив, состоящий из элементов, входящих в переданную последовательность. Последовательность значений, переданная в функцию.
Сұрақ. Создание пустого массива. Сравнение, слияние массивов. Многомерные массивы.
Создание пустого массива
Массив может иметь пустое значение, то есть не иметь элементов (это словно строка без символов). Для создания пустого массива можно использовать один из следующих способов:
явно указать тип создаваемого массива и передать ему значение [];
использовать специальную функцию [типДанных](), где типДанных определяет тип значений элементов массива.
Сравнение массивов
Массивы, так же как и значения фундаментальных типов данных, можно сравнивать друг с другом. Два массива являются эквивалентными:
если количество элементов в сравниваемых массивах одинаково;
если каждая соответствующая пара элементов эквивалентна (имеет одни и те же типы данных и значения).
Слияние массивов
Со значением массива, как и со значениями фундаментальных типов данных, можно проводить различные операции. Одной из них является операция слияния, при которой значения двух массивов сливаются в одно, образуя новый массив. Обратите внимание на несколько моментов:
результирующий массив будет содержать значения из обоих массивов, но индексы этих значений могут не совпадать с родительскими;
значения элементов подлежащих слиянию массивов должны иметь один и тот же тип данных.
Многомерные массивы
Элементами массива могут быть значения не только фундаментальных типов, но и любых других типов данных, включая сами массивы. Массивы, элементами которых также являются массивы, называются многомерными. Необходимо обеспечить единство типа всех вложенных массивов
16.Базовые свойства и методы массивов
Массивы — очень функциональные элементы языка. Об этом позаботились разработчики Swift, предоставив набор свойств и методов, позволяющих значитель. Для редактирования массива также можно использовать методы dropFirst(_:) и dropLast(_:), возвращающие новый массив, в котором отсутствует несколько первых или последних элементов, но при этом не изменяющие исходную коллекцию. Если в качестве входного аргумента ничего не передавать, то из результата удаляется один элемент, в противном случае — столько элементов, сколько передано.
ПРИМЕЧАНИЕ Разработчики Swift с умом подошли к именованию доступных методов. В большинстве случаев если какой-либо метод заканчивается на –ed, то он, не трогая исходное значение, возвращает его измененную копию. Аналогичный метод без –ed на конце модифицирует саму последовательность.