Saltar al contenido principal

Operadores ?? y ?

Youtube video player

Youtube video player

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: