當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。