Опционалы (optional) и кортежи в iOS

Опциональные типы используются в тех случаях, когда значение может отсутствовать.

Пример: Опциональный Int записывается как Int?, а не Int. Знак вопроса означает, что содержащееся в ней значение является опциональным, что означает, что он может содержать некое Int значение или он может вообще не содержать никакого значения. (Он не может содержать ничего другого, например Bool значение или значение String. Он либо Int, либо вообще ничто). Можно установить опциональную переменную в состояние отсутствия значения, путем присвоения ему специального значения nil (nil не может быть использован с не опциональными константами и переменными. Если объявить опциональную переменную без присвоения значения по умолчанию, то переменная автоматически установятся в nil). Если опционал содержит значение, можно получить доступ к его значению, добавив восклицательный знак (!) в конце имени опционала. Это выражение известно как Принудительное извлечение значения опционала. Если значения нет - то runtime error. Можно использовать Привязку опционало в, чтобы выяснить содержит ли опционал значение, и если да, то сделать это значение доступным в качестве временной константы или переменной. Привязка опционалов может использоваться с инструкциями if и while. Константы и переменные, созданные через опциональную привязку в инструкции if, будут доступны только в теле инструкции if. Иногда, сразу понятно из структуры программы, что опционал всегда будет иметь значение, после того как это значение впервые было установлено. В этих случаях, очень полезно избавиться от проверки и извлечения значения опционала каждый раз при обращении к нему, потому что можно с уверенностью утверждать, что он постоянно имеет значение. Эти виды опционалов называются неявно извлеченные опционалы. Их можно писать, используя восклицательный знак (String!), вместо вопросительного знака (String?), после типа, который вы хотите сделать опциональным.

Кортежи группируют несколько значений в одно составное значение. Значения внутри кортежа могут быть любого типа, то есть, нет необходимости, чтобы они были одного и того же типа. (404, "Not Found") = кортеж (Int, String). Вы можете создать кортеж с любой расстановкой типов, и они могут содержать сколько угодно нужных вам типов.

Вы можете разложить содержимое кортежа на отдельные константы и переменные, к которым можно получить доступ привычным способом: let (statusCode, statusMessage) = http404Error. Если вам нужны только некоторые из значений кортежа, вы можете игнорировать части кортежа во время разложения с помощью символа подчеркивания (_): let (justTheStatusCode, _) = http404Error. В качестве альтернативы можно получать доступ к отдельным частям кортежа, используя числовые индексы, начинающиеся с нуля: print("The status code is \(http404Error.0)")

Вы можете давать имена отдельным элементам кортежа во время объявления:let http200Status = (statusCode: 200, description: "OK") Когда вы присвоили имя элементу кортежа, вы можете обратиться к нему по имени: print("The status code is \(http200Status.statusCode)") Кортежи особенно полезны в качестве возвращаемых значений функций. Кортежи полезны для временной группировки связанных значений. Они не подходят для создания сложных структур данных.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: