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!