Sobes.tech
Junior — Middle

Como é que se pode implementar o comportamento próprio dos operadores de comparação em Dart?

sobes.tech IA

Resposta da IA

Em Dart, para implementar comportamentos personalizados dos operadores de comparação, pode sobrescrever o operador == e o método compareTo (se a classe implementar a interface Comparable).

Exemplo de sobrescrita do operador == e do método hashCode para uma comparação correta de objetos:

class Person {
  final String name;
  final int age;

  Person(this.name, this.age);

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;
    return other is Person && other.name == name && other.age == age;
  }

  @override
  int get hashCode => name.hashCode ^ age.hashCode;
}

Para ordenar objetos, pode implementar Comparable e o método compareTo:

class Person implements Comparable<Person> {
  final String name;
  final int age;

  Person(this.name, this.age);

  @override
  int compareTo(Person other) {
    return age.compareTo(other.age);
  }
}

Desta forma, define uma lógica personalizada de comparação de objetos.