比较运算符重载


下表显示了比较运算符及其用途的列表。

函数名称 操作员 目的
OPCMP < 是否之前
OPCMP <= 无论不是之后
OPCMP > 无论是之后
OPCMP >= 是否之前没有

比较运算符用于对数组进行排序。以下示例展示了如何使用比较运算符。

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\n", 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 
d_programming_overloading.htm