compareTo method

  1. @override
int compareTo(
  1. Logic other
)
override

Compares this object to another object.

Returns a value like a Comparator when comparing this to other. That is, it returns a negative integer if this is ordered before other, a positive integer if this is ordered after other, and zero if this and other are ordered together.

The other argument must be a value that is comparable to this object.

Implementation

@override
int compareTo(Logic other) {
  if (runtimeType != other.runtimeType) {
    final a = runtimeType.toString();
    final b = other.runtimeType.toString();
    return a.compareTo(b);
  } else {
    final a = args;
    final b = other.args;
    // The following is equivalent to tuple comparison in Python
    for (int i = 0; i < min(a.length, b.length); i++) {
      final cmp = a[i].compareTo(b[i]);
      if (cmp != 0) {
        return cmp;
      }
    }
    return a.length.compareTo(b.length);
  }
}