Latest web development tutorials

Swift факультативные (Optionals) Тип

опционально (необязательно) тип Swift, используемый при обработке пропущенных значений. Дополнительные средства ", где есть значение, и оно равно х" или "нет никакого значения."

Swfit суффикс определения языка? Дополнительно в качестве названного типа стенографии, другими словами, следующие два утверждения эквивалентны:

var optionalInteger: Int?
var optionalInteger: Optional<Int>

В обоих случаях переменная optionalInteger являются необязательными целого типа. Следует отметить, что, в типе и? Там нет места между ними.

Необязательно это перечисление не содержащая обоих случаях нет и некоторые (T), используется для обозначения он может или не может иметь значение. Любой тип может быть явно объявлен как (или неявное преобразование) дополнительного типа. При объявлении дополнительный тип времени, обязательно использовать скобки? Оператор соответствующий диапазон. Например, необязательный декларация массив целых чисел, должно быть написано (Int []);? Записывается как Int [] Ошибка?.

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

Дополнительное последующее LogicValue соглашение, оно может появиться в логическом контексте. В этом случае, если дополнительный тип Т? Содержать любой тип значения Т (то есть его значение Optional.Some (Т)), этот дополнительный тип равен верно, в противном случае оно ложно.

Если дополнительный экземпляр такого типа, который содержит значение, вы можете использовать оператор постфиксный! Для того, чтобы получить доступ к значению следующим образом:

optionalInteger = 42
optionalInteger! // 42

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

Вы можете использовать дополнительную ссылку и дополнительный селективно связываются для выполнения операций на дополнительном выражении. Если значение равно нулю, никакие операции не выполняются, то не будет запущена ошибка.

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

import Cocoa

var myString:String? = nil

if myString != nil {
    print(myString)
}else{
    print("字符串为 nil")
}

Приведенные выше результаты выполнения программы:

字符串为 nil

Дополнительный тип аналогичен значению с нулевыми данными указателей в Objective-C, но только всухую класса (класс) полезно, но не обязательно для всех видов типов доступны, и более безопасным.


Вынужденный решения

После того как вы определить тип действительно содержит дополнительные значения, вы можете добавить дополнительное имя за восклицательным знаком (!) Для того, чтобы получить значение. Восклицательный знак, сказал: "Я знаю, что есть необязательные значения, используйте его." Это называется обязательным необязательным разобранный значение (принудительная разворачивания).

Примерами могут служить следующие:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

Приведенные выше результаты выполнения программы:

Optional("Hello, Swift!")

Вынужденные аналитические необязательные значения, используйте восклицательный знак (!):

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   // 强制解析
   print( myString! )
}else{
   print("myString 值为 nil")
}

Приведенные выше результаты выполнения программы:

Hello, Swift!

Примечание:
Используйте ! Чтобы получить несуществующие дополнительные значения приведет к ошибке во время выполнения. Используйте ! Перед тем, чтобы заставить аналитическое значение, необходимо определить , необязательно содержать не- nil значение.


Автоматически вставлять

Вы можете заменить знак вопроса при объявлении переменной дополнительный восклицательный знак (!) (?). При использовании этого необязательные переменные вам не нужны плюс восклицательным знаком (!) Для того, чтобы получить значение, оно будет автоматически анализировать.

Примерами могут служить следующие:

import Cocoa

var myString:String!

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

Приведенные выше результаты выполнения программы:

Hello, Swift!

Дополнительный Bind

Использование дополнительных привязок (опция связывания), чтобы определить, содержит ли дополнительный тип значения, если он содержит значение, присвоенное поставить временную переменную или константу. Дополнительное связывание может быть использовано в случае и в то время как заявления, чтобы судить о ценности факультативного типа и присвоить значение постоянной или переменной.

Как это, если заявление, написанное в опциональный связывания:

if let constantName = someOptional {
    statements
}

Давайте посмотрим на простой альтернативной обязательного экземпляра:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if let yourString = myString {
   print("你的字符串值为 - \(yourString)")
}else{
   print("你的字符串没有值")
}

Приведенные выше результаты выполнения программы:

你的字符串值为 - Hello, Swift!