Основы Swift / 2.10. Кортежи


Видео


Кортежи
Кортежи позволяют группировать несколько значений в одно составное. Значения внутри кортежа могут быть любого типа, не обязательно у всех у них одинакового. Этих значений может быть сколь угодно много. Рассмотрим пример:
@{2.10\1}
                    
let http404Error = (404, "Not Found")
                    
                
В этом примере (404, "Not Found") - это кортеж, который описывает статус-код HTTP. HTTP статус-код - это специальное значение, возвращаемое веб-сервером, всякий раз когда Вы запрашиваете веб-страницу. Статус-код 404 Not Found возвращается, если Вы запросили несуществующую страницу.

Кортеж (404, "Not Found") группирует вместе Int и String, чтобы дать статус-коду HTTP два разных значения: число и человекопонятное описание. Оно может быть описано как "кортеж типа (Int, String)".
Декомпозиция кортежей
Вы можете декомпозировать кортеж на разные обыкновенные константы или переменные:
@{2.10\2}
                    
let (statusCode, statusMessage) = http404Error
print("Код статуса: \(statusCode)")
print("Сообщение статуса: \(statusMessage)")
                    
                
Заметьте, что для вывода значений полученных величин мы вновь использовали строковую интерполяцию.
Игнорирование декомпозированного значения
Если Вам нужно только какое-то из значений кортежа, проигнорируйте ненужные части c помощью символа нижнего подчёркивания (_), когда Вы декомпозируете кортеж:
@{2.10\3}
                    
let (justTheStatusCode, _) = http404Error
print("Код статуса: \(justTheStatusCode)")
                    
                
Получение доступа к элементам кортежа через индексы
Вы можете получить доступ к отдельному элементу кортежа, используя их индексы, начиная отсчёт с 0:
@{2.10\4}
                    
print("Код статуса: \(http404Error.0)")
print("Сообщение статуса: \(http404Error.1)")
                    
                
Именование элементов кортежа
Вы можете дать имена каждому элементу кортежа при его определении:
@{2.10\5}
                    
let http200Status = (statusCode: 200, description: "OK")
                    
                
Использование именованных элементов кортежа
Если Вы дали имена элементам кортежа, то Вы можете использовать их для доступа к значениям этих элементов:
@{2.10\6}
                    
print("Код статуса: \(http200Status.statusCode)")
print("Сообщение статуса: \(http200Status.description)")
                    
                
Отсчёт с нуля
Почти всё в программировании отсчитывается с нуля, а не с 1, как принято у людей без психических отклонений. Запомните это правило: оно Вам ещё пригодится.