dart:core
庫中Comparable
類的用法介紹如下。
具有內在排序的類型使用的接口。
compareTo 操作定義了對象的總排序,可用於排序和排序。
Comparable 接口應該用於類型的自然排序。如果一個類型可以以多種方式排序,並且它們都不是明顯的自然排序,那麽最好不要使用 Comparable 接口,而是提供單獨的 Comparator s。
建議 Comparable 的順序與其運算符 operator == 相等( a.compareTo(b) == 0
iff a == b
)一致,但這不是必需的。例如,double 和 DateTime 具有與運算符 operator == 不一致的 compareTo
方法。對於雙精度數,compareTo 方法比相等更精確,而對於 DateTime 則不那麽精確。
例子:
(0.0).compareTo(-0.0); // => 1
0.0 == -0.0; // => true
var now = DateTime.now();
var utcNow = now.toUtc();
now == utcNow; // => false
now.compareTo(utcNow); // => 0
Comparable 接口並不意味著存在比較運算符 <
、 <=
、 >
和 >=
。僅當排序是小於/大於排序時才應定義這些,也就是說,您自然會使用單詞"less than" 關於兩個元素的順序的排序。
如果相等運算符和 compareTo 不一致,則比較運算符應遵循相等運算符,並且可能也與 compareTo 不一致。否則,它們應該匹配 compareTo 方法,以便 a < b
iff a.compareTo(b) < 0
。
double 類定義了與相等兼容的比較運算符。運算符與 -0.0 和 NaN 上的 double.compareTo 不同。
DateTime 類沒有比較運算符,而是具有更精確命名的 DateTime.isBefore 和 DateTime.isAfter ,它們都與 DateTime.compareTo 一致。
相關用法
- Dart Completer用法及代碼示例
- Dart Completer.completeError用法及代碼示例
- Dart Completer.sync用法及代碼示例
- Dart Completer構造函數用法及代碼示例
- Dart ContentType.text用法及代碼示例
- Dart ContentType.parse用法及代碼示例
- Dart Codec.fuse用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageScaled用法及代碼示例
- Dart CanvasRenderingContext2D.drawImage用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageToRect用法及代碼示例
- Dart CanvasPattern用法及代碼示例
- Dart CanvasGradient用法及代碼示例
- Dart CanvasElement.toDataUrl用法及代碼示例
- Dart MapMixin.containsKey用法及代碼示例
- Dart Iterator用法及代碼示例
- Dart AttributeClassSet.intersection用法及代碼示例
- Dart num.sign用法及代碼示例
- Dart TransformList.last用法及代碼示例
- Dart FileList.first用法及代碼示例
- Dart FileList.length用法及代碼示例
- Dart Iterable.takeWhile用法及代碼示例
- Dart LinkedHashMap用法及代碼示例
- Dart RegExp.pattern用法及代碼示例
- Dart StreamTransformer構造函數用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 Comparable<T> class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。