Операторы отношения Dart

Операторы отношения — это знаки вычислений, предназначенные для всевозможных сравнений по величине. Мы часто используем их в математике.

Таблица операторов отношения

ОператорРасшифровка
==Равно (проверка совпадения значений)
!=Не равно
>Больше
<Меньше
>=Больше или равно
<=Меньше или равно

Оператор == также можно применять к другим объектам

Основные правила оператора равенства ==

== используется для проверки того, совпадают ли значения, которые представляют две переменные / объекты; если требуется строго определить, указывают ли две ссылки на абсолютно один и тот же объект в памяти, не используйте ==, вместо него применяйте специальную функцию identical().

Особая обработка нулевого значения null Если хотя бы одна из сторон равна null:

  • Обе стороны равны null — возвращается true
  • Только одна сторона равна null — возвращается false

Логика работы обычных объектов Эквивалентно вызову метода == первого операнда: x.==(y). По своей сути оператор является методом, принадлежащим операнду.

Все приведенные ниже выводы дают true: значение null не равно ни 0, ни пустой строке «»

void main() {
	// Обе стороны null, результат операции == равен true
	print(null == null); //true
	// Одна сторона null, другая содержит значение, результат == равен false
	print(null != 0); //true
	print(null != ""); //true
}
Code language: PHP (php)

Рассмотрим полный пример

void main() {
	// Сравнение на равенство через ==
	print(2 == 2);
	print("dart" == "dart");
	print([1,2] == [1,2]);

	// Сравнение на неравенство через !=
	print(2 != 3);
	print(true != false);

	// > Больше
	print(3 > 2);
	print(10 > -5);

	// < Меньше
	print(2 < 3);
	print(-1 < 0);

	// >= Больше или равно
	print(3 >= 3);
	print(5 >= 2);

	// <= Меньше или равно
	print(2 <= 3);
	print(4 <= 4);
}
Code language: Dart (dart)

Результаты выполнения

true
true
false
true
true
true
true
true
true
true
true
true
trueCode language: JavaScript (javascript)

Разница между == и identical()

void main() {
	var a = [1, 2];
	var b = [1, 2];
	
	// При сравнении List через == проверяются ссылки объектов; a и b — разные массивы, поэтому результат false
	print(a == b);
	
	// Функция identical проверяет, совпадает ли объект в памяти; a и b — разные массивы, возвращает false
	print(identical(a, b));
	
	// Переменная c напрямую ссылается на a, они указывают на один объект, identical вернет true
	var c = a;
	print(identical(a, c));
}
Code language: PHP (php)

Дополнение: чтобы сравнить содержимое двух списков, используйте функцию listEquals

import 'package:flutter/foundation.dart';
listEquals(a, b); // true, выполняет сравнение каждого элемента массиваCode language: JavaScript (javascript)

Сравнение строк

Для сравнения строк можно использовать только операторы == и !=

void main() {
	// Операции отношения и равенства для строк
	print("apple" != "banana"); //true
	print("apple" == "apple"); //true
	//print("zoo" > "apple"); // Ошибка: для строк недопустимы операторы > < >= <=, проверка равенства только через == !=

	// Сравнение булевых значений на равенство
	print(true == true);  //true
	print(true != false);  //true
}
Code language: PHP (php)

Операторы отношения в сочетании с арифметическими операторами

Из предыдущих уроков мы знаем правило приоритета: арифметические операции > операции отношения. Сначала вычисляются сложение, вычитание, умножение и деление, затем выполняются сравнения по величине и равенству;

void main() {
  // Сначала вычисляются арифметические выражения с обеих сторон, потом происходит сравнение
  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
}Code language: PHP (php)

В примере выше сначала рассчитываются математические выражения с обеих сторон оператора отношения, после чего сравниваются полученные результаты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *