O que são Opcionais
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 11 de 86.
Às vezes, uma variável pode não ter valor algum. No Swift, representamos a ausência de um valor usando optionals. Um opcional diz "existe um valor, e ele é igual a x" ou "não existe valor algum".
Para declarar um opcional, adicione um ponto de interrogação ? após o tipo:
var nickname: String? = "Alex"
var age: Int? = nilNo exemplo acima, nickname contém o valor "Alex", enquanto age contém nil — a forma do Swift de dizer "sem valor". Variáveis comuns não podem ser nil, mas opcionais podem.
Pense em um opcional como uma caixa que pode conter algo ou estar vazia. Antes de usar o que está dentro, você precisa verificar se realmente há algo lá. Este é um recurso de segurança fundamental no Swift que ajuda a evitar falhas decorrentes de valores ausentes inesperados.
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilObserve que quando você imprime um opcional com um valor, ele mostra Optional(100) em vez de apenas 100. Para acessar o valor real dentro dele, você precisa desembrulhar o opcional — o que abordaremos nas próximas lições.
Desafio
FácilEscreva uma função createOptional que recebe um número e retorna uma string mostrando como esse número seria exibido quando impresso como um opcional.
Quando você imprime um opcional que contém um valor, o Swift o exibe no formato Optional(value).
Lembrete de sintaxe de função: Em Swift, uma função que retorna um valor usa a seta -> para especificar o tipo de retorno, e a palavra-chave return para enviar o resultado de volta. Por exemplo:
func myFunction(param: Int) -> String {<br> return "result"<br>}
Você pode construir a string de retorno usando interpolação de string: "Optional(\(value))" — a parte \(value) insere o número diretamente na string.
Parâmetros:
value(Int): O número para envolver no formato opcional
Retornos: Uma string no formato Optional(value) onde value é o número fornecido.
Exemplo: Se a entrada for 100, retorne "Optional(100)"
Folha de consulta
Em Swift, optionals representam a ausência ou presença de um valor. Um opcional pode conter um valor ou ser nil.
Para declarar um opcional, adicione um ponto de interrogação ? após o tipo:
var nickname: String? = "Alex"
var age: Int? = nilVariáveis comuns não podem ser nil, mas opcionais podem. Use nil para representar "nenhum valor":
var score: Int? = 100
score = nilAo imprimir um opcional com um valor, o Swift o exibe como Optional(value):
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilExperimente você mesmo
func createOptional(value: Int) -> String {
// Escreva o código aqui
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa