4

可能重复:
什么是 Ruby <=>(宇宙飞船)运算符?

我看到了一个代码和一个我不熟悉的操作员

 @array << {:suffix=> substring, :index => i}
 @array.sort! { |x,y| x[:suffix] <=> y[:suffix]}

我不能在上面做谷歌。做什么<=>

4

3 回答 3

5

这是宇宙飞船运算符,它是从 Perl 中借来的。它通常用于排序,因为如果左操作数小于右操作数则返​​回 -1,如果右操作数大于左操作数则返​​回 1,否则返回 0。

1 <=> 2 # => -1
2 <=> 1 # => 1
1 <=> 1 # => 0
于 2012-11-18T17:08:48.057 回答
4

它为特定类定义了比较。如果情况... < ...为真,则返回-1,如果... == ...为真,则返回0,如果为真,... > ...则返回1

于 2012-11-18T17:08:14.640 回答
1

它被称为宇宙飞船操作员。

对于核心数字和字符串类,它是一个返回 -1、0 或 1 的比较运算符。

理论上,一个类可以定义任何运算符来做它想做的任何事情,但这将是排序时使用的方法。<=>如果需要对任意应用程序类进行排序,那么定义该类可能是有意义的。

于 2012-11-18T17:25:55.330 回答