Это 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"
Практически кортежи применимы когда нам необходимо вернуть из функции более одного значения.
Продолжение следует…