Кортежи или 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