可能重复:
什么是 Ruby <=>(宇宙飞船)运算符?
我看到了一个代码和一个我不熟悉的操作员
@array << {:suffix=> substring, :index => i}
@array.sort! { |x,y| x[:suffix] <=> y[:suffix]}
我不能在上面做谷歌。做什么<=>
?
可能重复:
什么是 Ruby <=>(宇宙飞船)运算符?
我看到了一个代码和一个我不熟悉的操作员
@array << {:suffix=> substring, :index => i}
@array.sort! { |x,y| x[:suffix] <=> y[:suffix]}
我不能在上面做谷歌。做什么<=>
?
这是宇宙飞船运算符,它是从 Perl 中借来的。它通常用于排序,因为如果左操作数小于右操作数则返回 -1,如果右操作数大于左操作数则返回 1,否则返回 0。
1 <=> 2 # => -1
2 <=> 1 # => 1
1 <=> 1 # => 0
它为特定类定义了比较。如果情况... < ...
为真,则返回-1
,如果... == ...
为真,则返回0
,如果为真,... > ...
则返回1
。
它被称为宇宙飞船操作员。
对于核心数字和字符串类,它是一个返回 -1、0 或 1 的比较运算符。
理论上,一个类可以定义任何运算符来做它想做的任何事情,但这将是排序时使用的方法。<=>
如果需要对任意应用程序类进行排序,那么定义该类可能是有意义的。