位置:首頁 > 高級語言 > D語言教學 > 比較操作符重載

比較操作符重載

下表顯示的比較運算符,其目的列表。

函數名 運算符 目的
opCmp < whether before
opCmp <= whether not after
opCmp > whether after
opCmp >= whether not before

比較操作符是用於排序的數組和一個示例如下所示如何使用比較性研究運算符。

import std.random;
import std.stdio;
import std.string;

struct Box
{
   int volume;

   int opCmp(const ref Box box) const
   {
      return (volume == box.volume  
              ? box.volume - volume: volume - box.volume);
   }

   string toString() const
   {
      return format("Volume:%s
", volume);
   }
}
void main()
{
   Box[] boxes;
   int j= 10;
   foreach (i; 0 .. 10) {
      boxes ~= Box(j*j*j);
      j = j-1;
   }
   writeln("Unsorted Array");
   writeln(boxes);

   boxes.sort;
   writeln("Sorted Array");
   writeln(boxes);
   writeln(boxes[0]<boxes[1]);
   writeln(boxes[0]>boxes[1]);
   writeln(boxes[0]<=boxes[1]);
   writeln(boxes[0]>=boxes[1]);

}

讓我們編譯和運行上麵的程序,這將產生以下結果:

Unsorted Array
[Volume:1000
, Volume:729
, Volume:512
, Volume:343
, Volume:216
, Volume:125
, Volume:64
, Volume:27
, Volume:8
, Volume:1
]
Sorted Array
[Volume:1
, Volume:8
, Volume:27
, Volume:64
, Volume:125
, Volume:216
, Volume:343
, Volume:512
, Volume:729
, Volume:1000
]
true
false
true
false