Кортежи (tuples)

Кортежи (tuples) группируют несколько значений в одно составное значение. Это значение внутри кортежа может иметь любой тип и значениям не обязательно всем быть одного типа.

В следующем примере, (404, «Not found») — это кортеж, который описывает код ответа HTTP. Код ответа HTTP — это специальное значение, которое веб-сервер возвращает вам каждый раз, когда вы запрашиваете веб-страницу. Код 404 Not found значит, что запрашиваемая страница не найдена.

Кортеж (404, «Not found») группирует Int и String для того, чтобы вернуть код ответа HTTP, состоящего из двух частей — номера и понятного человеку описания. Мы можем описать этот тип как «кортеж типа (Int, String)».

Вы можете создавать кортежи из любой перестановки типов и они могут содержать сколько угодно нужных вам типов. Можно создать кортежи (Int, Int, Int) или (String, Bool), в общем — любой, какой вам нужно.

Вы можете разобрать (или декомпозировать, или разложить — decompose) компоненты кортежа в отдельные константы или переменные, чтобы использовать их:

Если вам нужны лишь некоторые из значений кортежа, можно игнорировать его части, используя подчеркивание (_) при разложении кортежа:

Другой возможный вариант — доступ по индексу элемента, начиная от 0:


Можно также дать индивидуальные имена элементам в кортеже при его объявлении:

Если вы дали имена элементам в кортеже, вы можете использовать их, чтобы обращаться к этим элементам:

Кортежи особенно полезны, когда мы возвращаем значение из функций. ФФункция, которая скачивает веб страницу, может возвращать кортеж (Int, String) для обозначение успешности или неудачи совершенной операции. Возвращая кортеж с двумя значениями, каждое разного типа, функция предоставляет больше полезной информации о ее выполнении, чем если бы она возвращала какое-то одно значение. Для большей информации по теме, смотрите раздел «Функции с несколькими возвращемыми значениями» на нашем сайте.

Кортежи полезны для временных групп схожих значений. Они не предназначены для создания сложных структур данных. Если есть шанс, что ваши данные будут храниться в приложении некоторое время, лучше смоделировать их с помощью класса или структуры. Для большей информации на эту тему, почитайте раздел «Классы и структуры».


Просмотренно: 1 462 раз