O que são Optionais
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. Em Swift, representamos a ausência de um valor usando opcionais. Um opcional diz “há um valor, e ele é igual a x” ou “não há 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 maneira do Swift de dizer "nenhum valor". Variáveis comuns não podem ser nil, mas opcionais podem.
Pense em um optional como uma caixa que pode conter algo ou estar vazia. Antes de usar o que está dentro, você precisa verificar se realmente há algo ali. Esse é um recurso de segurança importante do Swift que ajuda a evitar falhas causadas por valores ausentes inesperados.
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilObserve que, ao imprimir um opcional com um valor, ele mostra Optional(100) em vez de apenas 100. Para acessar o valor real contido nele, você precisa desempacotar o opcional, o que abordaremos nas próximas lições.
Desafio
FácilEscreva uma função createOptional que receba um número e retorne uma string mostrando como esse número ficaria quando impresso como um opcional.
Importante: essa função retorna uma String. Você está escrevendo um texto que se parece com um opcional; não está retornando um valor opcional de verdade.
Quando você imprime um opcional que contém um valor, o Swift o exibe no formato Optional(value).
Lembrete sobre a sintaxe de funções: no Swift, uma função que retorna um valor usa a seta -> para especificar o tipo de retorno e a palavra-chave return para devolver o resultado. Por exemplo:
func myFunction(param: Int) -> String {<br> return "result"<br>}
Você pode criar a string de retorno usando interpolação de strings: "Optional(\(value))": a parte \(value) insere o número diretamente na string.
Parâmetros:
value(Int): o número a ser envolvido no formato de opcional
Retorna: uma string no formato Optional(value), em que value é o número fornecido.
Exemplo: se a entrada for 100, retorne "Optional(100)"
Experimente você mesmo
func createOptional(value: Int) -> String {
// Retorne uma String que parece um optional, não um optional real
// Insira o número entre os parênteses usando interpolação de string
return "Optional()"
}
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 móduloAtribuição compostaRecapitulação - Matemática simplesOperadores de comparação7Entrada e Saída Básicas
Função printInterpolação de stringsEntrada com readlineConversão de tiposRecapitulação - Até 120Recapitulação - Verdadeiro ou falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoRótulos de argumentosRevisão - função SigmaRevisão - função de validaçãoValores padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeradoIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de tipoNúmerosStringBooleanoConvenções de nomenclaturaRecapitulação - Inicializar variáveis5Operadores — Parte 2
Operadores lógicos — Parte 1Operadores lógicos — Parte 2Revisão — Lógica simplesOperadores lógicos — Parte 3Operador ternário8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo Dados de Entrada11FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz3Optionais
O que são OptionaisDesembrulhando com If LetGuard LetOperador de Coalescência de NilRecapitulação - Desembrulhamento Seguro6Tomada de Decisões
Instrução IfIf - ElseRecapitulação - Calculadora SimplesInstrução SwitchSwitch com Intervalos9Laços de Repetição
Laço For-InLaço WhileLaço Repeat-WhileBreakContinueRevisão - FatorialIntervalos em LaçosLaço AninhadoRevisão - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRevisão - Lista de ProdutosRevisão - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Swift