Menu
Coddy logo textTech

Operador de Coalescência Nula

Parte da seção Fundamentos do Journey de Swift da Coddy — lição 14 de 86.

Às vezes, você só quer fornecer um valor padrão quando um opcional é nil, sem escrever várias linhas de código. O operador de coalescência nula do Swift (??) faz exatamente isso — ele desempacota um opcional se ele tiver um valor, ou retorna um valor padrão se for nil.

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

Como nickname é nil, o operador retorna "Guest" em vez disso. Se nickname tivesse um valor, esse valor seria usado.

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

O operador de coalescência nula é perfeito para instruções de uma única linha onde você precisa de um valor de fallback. É mais limpo do que escrever uma instrução if let quando você simplesmente deseja substituir nil por um valor padrão. O resultado é sempre um valor não opcional, então você pode usá-lo diretamente sem a necessidade de desembrulhar (unwrapping) adicional.

challenge icon

Desafio

Fácil

Escreva uma função getDisplayName que recebe um username opcional e um defaultName, e então retorna o nome de exibição apropriado usando o operador de coalescência nula (nil coalescing operator).

Se o username estiver vazio (representado por uma string vazia ""), trate-o como nil e retorne o nome padrão. Caso contrário, retorne o username.

Parâmetros:

  • username (String): O nome do usuário (uma string vazia representa nil)
  • defaultName (String): O nome de reserva (fallback) a ser usado

Retorna: O username se não estiver vazio, caso contrário, o defaultName.

Dica: Converta o username para um opcional dentro da sua função — se estiver vazio, torne-o nil. Em seguida, use ?? para fornecer o valor de reserva.

Folha de consulta

O operador de coalescência nula (??) desembrulha um opcional se ele tiver um valor, ou retorna um valor padrão se for nil:

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

Se o opcional tiver um valor, esse valor será usado em vez disso:

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

O resultado é sempre um valor não opcional, tornando-o mais limpo do que o if let para cenários simples de fallback.

Experimente você mesmo

func getDisplayName(username: String, defaultName: String) -> String {
    // Escreva o código aqui
}
quiz iconTeste seus conhecimentos

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