OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.core; | 5 part of dart.core; |
6 | 6 |
7 /** | 7 /** |
8 * The signature of a generic comparison function. | 8 * The signature of a generic comparison function. |
9 * | 9 * |
10 * A comparison function represents an ordering on a type of objects. | 10 * A comparison function represents an ordering on a type of objects. |
11 * A total ordering on a type means that for two values, either they | 11 * A total ordering on a type means that for two values, either they |
12 * are equal or one is greater than the other (and the latter must then be | 12 * are equal or one is greater than the other (and the latter must then be |
13 * smaller than the former). | 13 * smaller than the former). |
14 * | 14 * |
15 * A [Comparator] function represents such a total ordering by returning | 15 * A [Comparator] function represents such a total ordering by returning |
16 * * a negative integer if [a] is smaller than [b], | 16 * * a negative integer if [a] is smaller than [b], |
17 * * zero if [a] is equal to [b], and | 17 * * zero if [a] is equal to [b], and |
18 * * a positive integer if [a] is greater than [b]. | 18 * * a positive integer if [a] is greater than [b]. |
19 */ | 19 */ |
20 typedef int Comparator<T>(T a, T b); | 20 typedef int Comparator<T>(T a, T b); |
21 | 21 |
22 /** | 22 /** |
23 * Interface used by types that have an intrinsic ordering. | 23 * Interface used by types that have an intrinsic ordering. |
24 */ | 24 */ |
25 abstract class Comparable { | 25 abstract class Comparable<T extends Comparable<T>> { |
26 /** | 26 /** |
27 * Compares this object to another [Comparable] | 27 * Compares this object to another [Comparable] |
28 * | 28 * |
29 * Returns a value like a [Comparator] when comparing [:this:] to [other]. | 29 * Returns a value like a [Comparator] when comparing [:this:] to [other]. |
30 * | 30 * |
31 * May throw an [ArgumentError] if [other] is of a type that | 31 * May throw an [ArgumentError] if [other] is of a type that |
32 * is not comparable to [:this:]. | 32 * is not comparable to [:this:]. |
33 */ | 33 */ |
34 int compareTo(Comparable other); | 34 int compareTo(T other); |
35 | 35 |
36 /** | 36 /** |
37 * Compare one comparable to another. | 37 * Compare one comparable to another. |
38 * | 38 * |
39 * This utility function is used as the default comparator | 39 * This utility function is used as the default comparator |
40 * for the [List] sort function. | 40 * for the [List] sort function. |
41 */ | 41 */ |
42 static int compare(Comparable a, Comparable b) => a.compareTo(b); | 42 static int compare(Comparable a, Comparable b) => a.compareTo(b); |
43 } | 43 } |
OLD | NEW |