swift

Это 2ой пост и 2ой час из серии «Swift за 24 часа». В прошлый раз мы рассмотрели Введение в Swift — разобрали что такое Swift и чем вызвано появление Swift, рассмотрели как объявлять константы и переменные, узнали какие бывают типы данных в Swift, что такое типо-безопасность и типо-определение. В этом часе разберем кортежи и опциональные типы. Вперед!

Кортежи (Tuples)

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

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

let http404Error = (404, "Not Found")
// http404Error кортеж типа (Int, String), и равен (404, "Not Found")

Кортеж http4040Error объединяет в себе  Int и String значения и может быть описан как кортеж типа (Int, String). Вы можете создавать кортеж с каким угодно количеством переменных или констант каких угодно типов.

Можно разобрать кортеж по отдельным переменным или константам

let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// Вывод "The status code is 404"
print("The status message is \(statusMessage)")
// Вывод "The status message is Not Found"

Можно игнорировать часть значений кортежа, используя _

let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// Вывод "The status code is 404"

Можно осуществлять доступ к элементам кортежа по индексу начиная с 0

print("The status code is \(http404Error.0)")
// Prints "The status code is 404"
print("The status message is \(http404Error.1)")
// Prints "The status message is Not Found"

Элементам кортежа можно присваивать имена:

let http200Status = (statusCode: 200, description: "OK")

Соответственно можно осуществлять доступ к элементам кортежа по именам

print("The status code is \(http200Status.statusCode)")
// Prints "The status code is 200"
print("The status message is \(http200Status.description)")
// Prints "The status message is OK"

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

Кортежи следует использовать для кратковременных операций (передал и забыл). Не следует создавать сложные структуры данных с применением кортежей.

Продолжение следует…