Swift - Опции

Swift 4 также представляет Optionalstype, который обрабатывает отсутствие значения. Опции говорят либо «есть значение, и оно равно x», либо «значения нет вообще».

Optional - это отдельный тип, фактически одно из новых сверхмощных перечислений Swift 4. У него есть два возможных значения:None и Some(T), где T - это связанное значение правильного типа данных, доступного в Swift 4.

Вот необязательное объявление Integer -

var perhapsInt: Int?

Вот необязательное объявление String -

var perhapsStr: String?

Приведенное выше объявление эквивалентно явной инициализации его как nil что означает отсутствие ценности -

var perhapsStr: String? = nil

Давайте рассмотрим следующий пример, чтобы понять, как работают опции в Swift 4:

var myString:String? = nil

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Когда мы запускаем вышеуказанную программу с помощью игровой площадки, мы получаем следующий результат -

myString has nil value

Варианты аналогичны использованию nil с указателями в Objective-C, но они работают для любого типа, а не только для классов.

Принудительное разворачивание

Если вы определили переменную как optional, то чтобы получить значение из этой переменной, вам нужно будет unwrapЭто. Это означает просто поставить восклицательный знак в конце переменной.

Возьмем простой пример -

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Когда мы запускаем вышеуказанную программу с помощью игровой площадки, мы получаем следующий результат -

Optional("Hello, Swift 4!")

Теперь давайте применим разворачивание, чтобы получить правильное значение переменной -

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print( myString! )
} else {
   print("myString has nil value")
}

Когда мы запускаем указанную выше программу с помощью игровой площадки, мы получаем следующий результат.

Hello, Swift 4!

Автоматическая распаковка

Вы можете объявить необязательные переменные, используя восклицательный знак вместо вопросительного знака. Такие необязательные переменные будут разворачиваться автоматически, и вам не нужно использовать восклицательный знак в конце переменной, чтобы получить присвоенное значение. Возьмем простой пример -

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Когда мы запускаем вышеуказанную программу с помощью игровой площадки, мы получаем следующий результат -

Hello, Swift 4!

Дополнительная привязка

Используйте необязательную привязку, чтобы узнать, содержит ли необязательный параметр значение, и, если да, сделать это значение доступным как временную константу или переменную.

Необязательная привязка для if заявление выглядит следующим образом -

if let constantName = someOptional {
   statements
}

Давайте рассмотрим простой пример, чтобы понять использование необязательной привязки -

var myString:String?
myString = "Hello, Swift 4!"

if let yourString = myString {
   print("Your string has - \(yourString)")
} else {
   print("Your string does not have a value")
}

Когда мы запускаем вышеуказанную программу с помощью игровой площадки, мы получаем следующий результат -

Your string has - Hello, Swift 4!