Swift - opcionais

Swift 4 também apresenta Optionalstipo, que lida com a ausência de um valor. Os opcionais dizem "há um valor e é igual a x" ou "não há valor algum".

Um opcional é um tipo por si só, na verdade um dos novos enums superpoderosos do Swift 4. Tem dois valores possíveis,None e Some(T), Onde T é um valor associado do tipo de dados correto disponível no Swift 4.

Aqui está uma declaração opcional de inteiro -

var perhapsInt: Int?

Aqui está uma declaração String opcional -

var perhapsStr: String?

A declaração acima é equivalente a explicitamente inicializá-lo para nil o que significa nenhum valor -

var perhapsStr: String? = nil

Vamos dar o exemplo a seguir para entender como funcionam os opcionais no Swift 4 -

var myString:String? = nil

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

Quando executamos o programa acima usando playground, obtemos o seguinte resultado -

myString has nil value

Opcionais são semelhantes a usar nil com ponteiros em Objective-C, mas funcionam para qualquer tipo, não apenas classes.

Desembrulhar forçado

Se você definiu uma variável como optional, então para obter o valor desta variável, você terá que unwrapisto. Isso significa apenas colocar um ponto de exclamação no final da variável.

Vamos dar um exemplo simples -

var myString:String?

myString = "Hello, Swift 4!"

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

Quando executamos o programa acima usando playground, obtemos o seguinte resultado -

Optional("Hello, Swift 4!")

Agora vamos aplicar o desempacotamento para obter o valor correto da variável -

var myString:String?

myString = "Hello, Swift 4!"

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

Quando executamos o programa acima usando playground, obtemos o seguinte resultado.

Hello, Swift 4!

Desempacotamento Automático

Você pode declarar variáveis ​​opcionais usando um ponto de exclamação em vez de um ponto de interrogação. Essas variáveis ​​opcionais serão desembrulhadas automaticamente e você não precisa usar nenhum outro ponto de exclamação no final da variável para obter o valor atribuído. Vamos dar um exemplo simples -

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

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

Quando executamos o programa acima usando playground, obtemos o seguinte resultado -

Hello, Swift 4!

Ligação opcional

Use a ligação opcional para descobrir se um opcional contém um valor e, em caso afirmativo, para disponibilizar esse valor como uma constante ou variável temporária.

Uma ligação opcional para o if declaração é a seguinte -

if let constantName = someOptional {
   statements
}

Vamos dar um exemplo simples para entender o uso da ligação opcional -

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")
}

Quando executamos o programa acima usando playground, obtemos o seguinte resultado -

Your string has - Hello, Swift 4!