Dart: operadores conscientes de nulo

Los operadores conscientes de nulo en dart le permiten realizar cálculos en función de si un valor es nulo o no. Es una forma abreviada de expresiones más largas. Un operador consciente de nulos es una buena herramienta para hacer que los tipos anulables se puedan usar en Dart en lugar de arrojar un error. Estos operadores se usan en fullback en combinación para obtener valor al final pero no nulo. Los operadores conscientes de nulo se utilizan en casi todos los lenguajes de programación para verificar si el valor de la variable dado es nulo. La palabra clave para Null en el lenguaje de programación Dart es null. Nulo significa una variable que nunca tiene valores asignados y la variable se inicializa sin nada parecido. El uso más común del operador Nulo consciente es cuando un desarrollador quiereanalizar los datos JSON del servidor y después de analizar JSON, el usuario puede comprobar si el JSON está vacío o no mediante la condición IF-Else.

Aquí se explican algunos operadores conscientes de nulos.

1. Operador predeterminado: ??

  • usamos ?? cuando desee evaluar y devolver una expresión si otra expresión se resuelve como nula.
  • También se le llama operador if-null y operador coalescente.
  • El operador consciente de nulo es ?? , que devuelve la expresión a su izquierda a menos que el valor de esa expresión sea nulo. En cuyo caso es nulo, devuelve la expresión a su derecha:

Ejemplo 1:

Dart

void main(){
   
  // In this we have defined the value of variable b.
 var b = "GeeksforGeeks";
  String a = b ?? 'Hello';
  print(a);
   
  // In this we have not defined the value of variable c.
  var c;
  String d = c ?? 'hello';
  print(d);
}

Producción: 

GeeksforGeeks
hello

Explicación:  En el ejemplo anterior, tenemos dos partes. En la primera parte el valor de la variable b no es nulo . En la segunda parte el valor de la variable c es nulo . En la primera parte, dado que la variable b no es nula , el ?? el operador devolverá el valor asignado, es decir, GeeksforGeeks , y en la segunda parte, la variable c es nula , por lo tanto, el segundo valor será devuelto por ?? operador, es decir hola.

Ejemplo 2:

Dart

void main() {
   var code;
   code = code ?? "Java";
   print(code);
 
   var companyName = "Microsoft";
   companyName = companyName ?? "Google";
   print(companyName);
}

Producción: 

Java
Microsoft

Explicación: En el ejemplo anterior, declaramos dos variables y una de ellas tiene un valor nulo y la otra no es nulo y contiene un valor de string. Estamos usando el ?? operador al reasignar valores a esas variables. En la primera variable, dado que el código de la variable es nulo, el ?? el operador devolverá el segundo valor, es decir, Java, y en el segundo caso, la variable companyName no es nula, por lo que el primer valor se devolverá desde el ?? operador, es decir, Microsoft.

2. Operador diferencial operativo: …?

  • Este operador se introdujo en la versión 2.3 de Dart.
  • Al colocar … antes de una expresión, inserta una lista en otra solo si no es nula.
  • Ayuda a agregar múltiples valores a nuestra colección como Lista, Mapa y Conjunto.
  • También se le llama operador de verificación nula.

Ejemplo 1:

Dart

void main(){
  List<int> lowerNumber = [1,2,3,4,5];
  List<int> upperNumbers = [6,8,9,0];
  lowerNumber = [...lowerNumber,...?upperNumbers];
  print('numbers are ${lowerNumber}');
   
  List<int> listNull;
  lowerNumber = [...lowerNumber, ...?listNull];
  print('new list are ${lowerNumber}');
}

Producción: 

Explicación:

  • En la primera línea de salida, obtenemos la lista adjunta.
  • Ahora vemos que el valor de listNull no está asignado, es decir, es nulo.
  • En dart, si no usamos el operador (…?) obtenemos un error porque el valor de listNull es nulo y no podemos imprimir el resultado deseado que puede ver a continuación:

  • Para eliminar este error, hemos utilizado el operador (…?) para que no obtengamos un error y obtengamos el resultado deseado.
  • Entonces, en la segunda línea, obtuvimos una nueva lista sin causar un error.

Ejemplo 2:

Dart

void main(){
 List<Friend> friendA = [
   Friend(name: 'Sara', age: 12),
   Friend(name: 'Jenny', age: 17)
 ];
  List<Friend> friendB;
  List<Friend> myFriends = [...friendA, ...?friendB, Friend(name:  'Julia', age: 15)];
  myFriends.forEach((friend) => print(friend.name));
}
class Friend{
  String name;
  int age;
  Friend({this.name, this.age});
}

 
 Producción: 

Publicación traducida automáticamente

Artículo escrito por ayurishchandnacs18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *