Operadores ?? y ?
Dart tiene 2 operadores que permiten simplificar el uso del if-else
.
El primero es el operador ?
y funciona de la siguiente forma:
condicion ? resultado1 : resultado2
. Si la condición es true
evalúa el resultado1
si la condición
es false
evalúa él resultado2
. Por ejemplo sí tenemos el siguiente código usando if-else
:
var edad = 17;
if (edad >= 18) {
print('Es mayor de edad');
} else {
print('Es menor de edad');
}
Si utilizamos el operador ?
quedaría de la siguiente forma:
edad >=18 ? print('Es mayor de edad') : print('Es menor de edad');
También podemos asignar el resultado a alguna variable:
String resultado = edad >=18 ? 'Es mayor de edad' : 'Es menor de edad';
El segundo operador es él ??
y funciona de la siguiente forma:
resultado1 ?? resultado2
. Si resultado1
no es nulo regresa su valor de lo contrario regresa él resultado2
.
Por ejemplo sí tenemos el siguiente código usando if-else
:
String? nombre = 'Yayo';
if (nombre == null) {
print('El nombre es nulo');
} else {
print(nombre);
}
Si utilizamos el operador ??
quedaría de la siguiente forma:
String? nombre = 'Yayo';
print( nombre ?? 'El nombre es nulo ');
En el fragmento de código anterior imprime en consola Yayo
porque la variable nombre
no es nula.
Puedes correr el código en DartPad y ver el funcionamiento: