当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Comparable用法及代码示例


dart:core 库中Comparable 类的用法介绍如下。

具有内在排序的类型使用的接口。

compareTo 操作定义了对象的总排序,可用于排序和排序。

Comparable 接口应该用于类型的自然排序。如果一个类型可以以多种方式排序,并且它们都不是明显的自然排序,那么最好不要使用 Comparable 接口,而是提供单独的 Comparator s。

建议 Comparable 的顺序与其运算符 operator == 相等( a.compareTo(b) == 0 iff a == b )一致,但这不是必需的。例如,doubleDateTime 具有与运算符 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.isBeforeDateTime.isAfter ,它们都与 DateTime.compareTo 一致。


实施者

BigInt DateTime Duration num String

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Comparable<T> class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。