0Pricing
Swift Academy · Aula

Optionals

Optionals

Optionals é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 1. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 1 aulas no total.

Introdução

Olá,

É usado para expressar que uma variável opcional pode não ter um valor.

Se uma variável do tipo opcional tiver um valor, ela será desembrulhada e usada. Caso contrário, não haverá valor.

Uso de opcionais para muitos tipos no Swift

Pode ser comparado ao ponteiro nil do Obj-C. Entretanto, o ponteiro nil só é válido para tipos de objeto.

Os opcionais no Swift são usados não apenas para tipos de objeto, mas também para estruturas, enumerações e tipos simples.

var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable 
automatically takes the value of nil.
*/

O nil do Swift e o nil do Obj-C não são iguais

O nil do Swift e o nil do Obj-C não são iguais.

Um ponteiro nil no Obj-C indica a ausência do objeto. No Swift, ele não é um ponteiro nil. O nil no Swift indica a ausência de dados e oferece suporte a outras linguagens, não apenas ao tipo de objeto.

Desembrulhamento forçado

As variáveis que definimos como opcionais podem ser acessadas usando o método de desembrulhamento forçado.

Com o operador de exclamação, o código pode ser forçado a ser desembrulhado, mas, em geral, seu uso não é muito recomendado.

Se os dados referenciados não estiverem disponíveis durante o desembrulhamento forçado, obteremos um erro em tempo de execução.

let convertedNumber : Int? = 123
if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

Acessando opcionais com vinculação opcional

Acessando opcionais com vinculação opcional

Com o bloco if let, podemos acessar o valor da variável opcional atribuindo-o a uma constante ou variável.

Usar essa abordagem em vez do desembrulhamento forçado é um método mais elegante.

var possibleNumber : String? = "10"

if let actualNumber = possibleNumber {
    print(actualNumber)
}

Exemplo

if let firstNumber = Int("4"), let secondNumber = Int("42"), 
  firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
 If at least one of them is false,
 it will not be entered in the if blog.
*/

Opcionais desembrulhados implicitamente

Opcionais desembrulhados implicitamente

Em alguns casos, o valor opcional é atribuído na primeira etapa e, nas etapas seguintes, ele certamente não é nil.

Nesses casos, em vez de usar opcional (?) , ao expressá-lo com o operador (!), indicamos que esse opcional definitivamente não é nil. 

Essa forma de definição é chamada de “opcionais desembrulhados implicitamente”.

Desembrulhado implicitamente

Desembrulhado implicitamente

A área mais comum de uso é a fase de inicialização da classe.

Ao contrário dos opcionais tradicionais, não precisamos desembrulhar as variáveis que são expressas implicitamente como desembrulhadas.

let possibleString: String? = "An optional string."
 // requires an exclamation mark
let forcedString: String = possibleString!

let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString 

Exemplo

Se atribuirmos nil a variáveis desse tipo, obteremos erros em tempo de execução.

Vejamos um exemplo

/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional 
in the same way we use classic optional.
*/

var assumedString: String! = nil

if let definiteString = assumedString {
    print(definiteString)
}
// Prints "An implicitly unwrapped optional string."

Aviso

Se uma variável tiver potencial de ser nil, o opcional desembrulhado implicitamente não deverá ser usado.

Operador de coalescência de nulo

Operador de coalescência de nulo

Ele facilita o desembrulho de tipos opcionais.

Vamos vê-lo em um exemplo.

let defaultColorName = "red"
 // defaults to nil
var userDefinedColorName: String?  

var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil, 
so colorNameToUse is set to the default of "red"
*/


// a != nil ? a! : b 
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn, 
otherwise it returns the default value, ie b.
*/

Parabéns

Parabéns 🎉

O conceito de opcionais é um dos recursos mais importantes do Swift. Ao usar opcionais, eliminamos os controles de nulo, escrevemos nosso código de forma mais elegante e tornamos nossos aplicativos mais seguros.

Até a próxima lição 🥳

Optionals — ilustração 12

Perguntas Frequentes

A aula “Optionals” é grátis?

Sim — o texto completo de “Optionals” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 1 aulas no total.

O que vou aprender em “Optionals”?

Optionals Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 1.

Quanto tempo leva a aula “Optionals”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

← Voltar para Swift Academy