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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。