Does dart support operator overloading

dart, function, operator-keyword, overloading

Solution

The chosen answer is no longer valid when you try overloads using the `==` operator in the new version. Now you need to do this:

class MyClass {
  @override
  bool operator ==(other) {
    // compare this to other
  }
}

But it's not safe. `other` is not specified as a type, Something unexpected may happened. For example:

void main() {
  var a = A(1);
  var b = B(1);
  var result = a == b;
  print(result); //result is true
}

class A {
  A(this.index);

  final int index;

  @override
  bool operator ==(other) => other.index == index;
}

class B {
  B(this.index);

  final int index;
}

So you could do like this:

class A {
  A(this.index);

  final int index;

  @override
  bool operator ==(covariant A other) => other.index == index;
}

You need to use `covariant`. Because Object overloads the `==` operator.

or you can

Test Object Type: visit: hash_and_equals

class A {
  A(this.index);

  final int index;

  @override
  bool operator ==(other) => other is A && (other.index == index);

  @override
  int get hashCode => index;
}

Problem

I read that Dart does not support function overloading. Does it support operator overloading? If yes, can you show me how it's done in a simple example? And what are some advantages etc?

Original source

Related problems