РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
112 of 723 menu

Ключевое слово operator

Ключевое слово operator используется внутри класса для переопределения поведения стандартных операторов языка Dart. Это позволяет объектам класса участвовать в выражениях с операторами (например, +, -, ==, [] и другими). В качестве имени метода выступает сам оператор. В параметры метода передается правый операнд (для бинарных операторов) или индекс (для оператора []). Переопределение операторов делает код более выразительным и интуитивно понятным при работе с пользовательскими типами данных.

Синтаксис

class ClassName { ReturnType operator +(Type other) { // implementation } }

Пример

Давайте создадим класс Vector, представляющий двумерный вектор, и переопределим оператор + для сложения векторов:

class Vector { final int x; final int y; Vector(this.x, this.y); Vector operator +(Vector other) { return Vector(this.x + other.x, this.y + other.y); } @override String toString() { return '($x, $y)'; } } void main() { Vector v1 = Vector(1, 2); Vector v2 = Vector(3, 4); Vector res = v1 + v2; print(res); }

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

"(4, 6)"

Пример

Давайте переопределим оператор [] для доступа к элементам пользовательской коллекции:

class MyList { final List<int> _items; MyList(this._items); int operator [](int index) { return _items[index] * 10; } } void main() { MyList list = MyList([1, 2, 3, 4, 5]); print(list[2]); }

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

30

Пример

Давайте переопределим оператор == для сравнения объектов по значению:

class Point { final int x; final int y; Point(this.x, this.y); @override bool operator ==(Object other) { if (other is! Point) return false; return this.x == other.x && this.y == other.y; } @override int get hashCode => Object.hash(x, y); } void main() { Point p1 = Point(1, 2); Point p2 = Point(1, 2); print(p1 == p2); }

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

true

Смотрите также

  • ключевое слово operator=,
    которое переопределяет оператор присваивания
  • ключевое слово class,
    которое объявляет класс
  • ключевое слово get,
    которое создает геттер
  • ключевое слово set,
    которое создает сеттер
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить