Operadores relacionales de Dart

Los operadores relacionales son símbolos de cálculo que se usan para realizar todo tipo de comparaciones de magnitud. Los utilizamos habitualmente en matemáticas.

Tabla de operadores relacionales

OperadorDescripción
==Igual (comprobación de coincidencia de valores)
!=Diferente
>Mayor que
<Menor que
>=Mayor o igual que
<=Menor o igual que

El operador == también se puede usar en otros objetos

Reglas fundamentales del operador de igualdad ==

== sirve para comprobar si los valores que representan dos variables / objetos son idénticos; si necesitas verificar estrictamente si dos referencias apuntan al mismo objeto en memoria, no uses ==, emplea la función exclusiva identical().

Tratamiento especial del valor nulo (null) Si cualquiera de los lados es null:

  • Si ambos lados son null, devuelve true
  • Si solo uno de los lados es null, devuelve false

Lógica de ejecución para objetos comunes Equivale a invocar el método == del primer operando: x.==(y); el operador es, en esencia, un método miembro del operando.

Todas las salidas siguientes son true: null no es igual a 0 ni a la cadena vacía «»

void main() {
	// Ambos lados son null, el resultado de == es true
	print(null == null); //true
	// Un lado null, el otro con valor, el resultado de == es false
	print(null != 0); //true
	print(null != ""); //true
}
Lenguaje del código: PHP (php)

Veamos un ejemplo completo

void main() {
	// Comparación de igualdad con ==
	print(2 == 2);
	print("dart" == "dart");
	print([1,2] == [1,2]);

	// Comparación de desigualdad con !=
	print(2 != 3);
	print(true != false);

	// > Mayor que
	print(3 > 2);
	print(10 > -5);

	// < Menor que
	print(2 < 3);
	print(-1 < 0);

	// >= Mayor o igual que
	print(3 >= 3);
	print(5 >= 2);

	// <= Menor o igual que
	print(2 <= 3);
	print(4 <= 4);
}
Lenguaje del código: Dart (dart)

Resultados de ejecución

true
true
false
true
true
true
true
true
true
true
true
true
trueLenguaje del código: JavaScript (javascript)

Diferencias entre == y identical()

void main() {
	var a = [1, 2];
	var b = [1, 2];
	
	// El == de List compara referencias de objetos; a y b son dos arrays distintos, el resultado es false
	print(a == b);
	
	// identical comprueba si se trata del mismo objeto en memoria; a y b son arrays diferentes, devuelve false
	print(identical(a, b));
	
	// c hace referencia directa a a, apuntan al mismo objeto, identical devuelve true
	var c = a;
	print(identical(a, c));
}
Lenguaje del código: PHP (php)

Aclaración: Para comparar el contenido de dos listas, usa listEquals

import 'package:flutter/foundation.dart';
listEquals(a, b); // true, compara cada elemento del arrayLenguaje del código: JavaScript (javascript)

Comparación de cadenas de texto

Solo se pueden usar == y != para comparar cadenas

void main() {
	// Operaciones relacionales / de igualdad para cadenas
	print("apple" != "banana"); //true
	print("apple" == "apple"); //true
	//print("zoo" > "apple"); // Error: las cadenas no admiten > < >= <=, solo == != para comprobar igualdad

	// Comparación de igualdad de valores booleanos
	print(true == true);  //true
	print(true != false);  //true
}
Lenguaje del código: PHP (php)

Operadores relacionales combinados con operadores aritméticos

Según las lecciones anteriores, sabemos que: operaciones aritméticas > operaciones relacionales; primero se calculan sumas, restas, multiplicaciones y divisiones, luego se realizan las comparaciones de magnitud e igualdad;

void main() {
  // Primero calcula las expresiones aritméticas de ambos lados, luego compara
  print(10 + 5 == 3 * 5); // 15 == 15 → true
  print(20 - 3 != 8 + 9); // 17 != 17 → false
  print(12 + 4 > 5 + 6);  // 16 > 11 → true
  print(9 - 7 < 10 - 1);  // 2 < 9 → true
  print(6 + 2 >= 4 * 2);  // 8 >= 8 → true
  print(15 - 8 <= 3 + 5); // 7 <= 8 → true
}Lenguaje del código: PHP (php)

En el ejemplo anterior, se calculan primero las expresiones matemáticas a ambos lados del operador relacional y después se comparan los resultados obtenidos.

Deja una respuesta

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