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) // GuestDado 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) // SwiftCoderEl 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.
Desafío
FácilEscribe 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) // GuestSi el opcional tiene un valor, se utiliza ese valor en su lugar:
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderEl 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í
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAsignación compuestaResumen - Matemáticas simplesOperadores de comparación7E/S Básica
Función PrintInterpolación de StringsEntrada ReadLineConversión de TiposRepaso - Hasta 120Repaso - Verdadero o Falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoEtiquetas de argumentosResumen - Función SigmaResumen - Función de validaciónValores por defecto13Iterar sobre secuencias
Iterar sobre elementosEl método enumerateIterar sobre cadenas P1Iterar sobre cadenas P22Variables
Let vs VarAnotaciones de tiposNúmerosStringsBooleanosConvenciones de nomenclaturaResumen - Inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operador ternario8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz3Opcionales
Qué son los opcionalesDesempaquetado con If LetGuard LetOperador de coalescencia nulaResumen - Desempaquetado seguro6Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleSentencia SwitchSwitch con rangos9Bucles
Bucle For-InBucle WhileBucle Repeat-WhileBreakContinueRepaso - FactorialRangos en buclesBucle anidadoRepaso - Entrada dinámica