Кортежи

Последнее обновление: 29.12.2017

Кортежи или Tuples представляют набор значений, которые рассматриваются как один объект. Для создания кортежа используются скобки, внутри которых записываются все элементы кортежа:

let props = (22, "age")
var userInfo = (true, 34, "Tom")

Здесь два кортежа props и userInfo. Кортеж props содержит число 22 и строку "age", а кортеж userInfo хранит логическое значение true, число 34 и строку "Tom".

Хотя в данном случае тип данных в кортеже не указан и выводится неявно, но мы можем при определении кортежа также объявить и типы данных его значений:

let props: (Int, String) = (22, "age")
var userInfo: (Bool, Int, String) = (true, 34, "Tom")

Причем при объявлении типов кортежа его значения должны полностью соответствовать по типу.

Мы можем присвоить значения из кортежа переменным или константам. Например:

var userInfo: (Bool, Int, String) = (true, 34, "Tom")
let(isMarried, age, name) = userInfo
print(name)		// "Tom"

Здесь трем константам isMarried, age и name присваиваются значения кортежа. Причем присвоение идет по позиции: константе isMarried присваивается первое значение кортежа, константе age - второе значение и так далее.

Если необходимо игнорировать при присвоении некоторые значения, то для них можно использовать знак подчеркивания _. Например, нам не нужно первое значение кортежа:

var userInfo: (Bool, Int, String) = (true, 34, "Tom")
let(_, age, name) = userInfo

Вместо присвоения всех значений кортежа переменным мы можем выполнять присвоение по отдельности:

var userInfo: (Bool, Int, String) = (true, 34, "Tom")
let age = userInfo.1
let isMarried = userInfo.0
var name = userInfo.2

Нумерация элементов кортежа начинается с нуля, поэтому к первому элементу мы сможем обратиться так: userInfo.0.

Также по отдельности мы можем изменять элементы кортежа, если кортеж определен как переменная:

var userInfo: (Bool, Int, String) = (true, 34, "Tom")
userInfo.2 = "Bob"
var name = userInfo.2	// Bob

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

Также при определении кортежа мы можем именовать его отдельные элементы. Например:

var userInfo = (married: true, age: 34, name: "Tom")
let age = userInfo.age
var name = userInfo.name	// Tom
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850