Menu
Coddy logo textTech

Operador de coalescencia nula

Parte de la sección Fundamentos del Journey de Swift de Coddy — lección 14 de 86.

A veces, simplemente quieres proporcionar un valor predeterminado cuando un opcional es nil, sin tener que escribir varias líneas de código. El operador de coalescencia nula de Swift (??) hace exactamente eso: desenvuelve un opcional si tiene un valor, o devuelve un valor predeterminado si es nil.

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

Dado que nickname es nil, el operador devuelve "Guest" en su lugar. Si nickname tuviera un valor, se usaría ese valor.

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

El operador de coalescencia nula es perfecto para líneas únicas donde necesitas un valor de respaldo. Es más limpio que escribir una sentencia if let cuando simplemente quieres sustituir nil por un valor predeterminado. El resultado es siempre un valor no opcional, por lo que puedes usarlo directamente sin necesidad de desempaquetarlo más.

challenge icon

Desafío

Fácil

Escribe una función getDisplayName que reciba un username opcional y un defaultName, y luego devuelva el nombre de visualización apropiado utilizando el operador de coalescencia nula.

Si el nombre de usuario está vacío (representado por una cadena vacía ""), trátalo como nil y devuelve el nombre predeterminado. De lo contrario, devuelve el nombre de usuario.

Parámetros:

  • username (String): El nombre del usuario (una cadena vacía representa nil)
  • defaultName (String): El nombre de respaldo a utilizar

Retorna: El username si no está vacío, de lo contrario el defaultName.

Consejo: Convierte el username a un opcional dentro de tu función; si está vacío, hazlo nil. Luego usa ?? para proporcionar el valor de respaldo.

Hoja de referencia

El operador de coalescencia nula (??) desenvuelve un opcional si tiene un valor, o devuelve un valor predeterminado si es nil:

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

Si el opcional tiene un valor, se utiliza ese valor en su lugar:

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

El resultado es siempre un valor no opcional, lo que lo hace más limpio que if let para escenarios simples de respaldo.

Pruébalo tú mismo

func getDisplayName(username: String, defaultName: String) -> String {
    // Escribe el código aquí
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos