Это 2ой пост и 2ой час из серии “Swift за 24 часа”. В прошлый раз мы рассмотрели Введение в Swift – разобрали что такое Swift и чем вызвано появление Swift, рассмотрели как объявлять константы и переменные, узнали какие бывают типы данных в Swift, что такое типо-безопасность и типо-определение. В этом часе разберем кортежи и опциональные типы. Вперед!
Кортежи (Tuples)
Кортеж объединяет несколько значений в одно объединенное значение. Значения в кортеже могут быть различных типов.
В следующем примере (404, “Not Found”) – кортеж, описывающий HTTP status code. HTTP status code это специальное значение, возвращаемое веб-сервером каждый раз, когда вы запрашиваете веб-страницу. Статус код 404 Not Found возвращается, если запрашиваемая страница не существует.
1 2 | let http404Error = (404, "Not Found") // http404Error кортеж типа (Int, String), и равен (404, "Not Found") |
Кортеж http4040Error объединяет в себе Int и String значения и может быть описан как кортеж типа (Int, String). Вы можете создавать кортеж с каким угодно количеством переменных или констант каких угодно типов.
Можно разобрать кортеж по отдельным переменным или константам
1 2 3 4 5 | 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" |
Можно игнорировать часть значений кортежа, используя _
1 2 3 | let (justTheStatusCode, _) = http404Error print("The status code is \(justTheStatusCode)") // Вывод "The status code is 404" |
Можно осуществлять доступ к элементам кортежа по индексу начиная с 0
1 2 3 4 | 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" |
Элементам кортежа можно присваивать имена:
1 | let http200Status = (statusCode: 200, description: "OK") |
Соответственно можно осуществлять доступ к элементам кортежа по именам
1 2 3 4 | 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" |
Практически кортежи применимы когда нам необходимо вернуть из функции более одного значения.
Продолжение следует…