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 🥳

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.