【发布时间】:2012-11-06 16:49:16
【问题描述】:
我看到了一个我不熟悉的代码和一个运算符
@array << {:suffix=> substring, :index => i}
@array.sort! { |x,y| x[:suffix] <=> y[:suffix]}
我不能用谷歌搜索它。 <=> 是做什么的?
【问题讨论】:
-
symbolhound.com 是你的朋友
标签: ruby
我看到了一个我不熟悉的代码和一个运算符
@array << {:suffix=> substring, :index => i}
@array.sort! { |x,y| x[:suffix] <=> y[:suffix]}
我不能用谷歌搜索它。 <=> 是做什么的?
【问题讨论】:
标签: ruby
这是the spaceship operator,它是从 Perl 借来的。常用于排序,因为左操作数小于右操作数返回-1,右操作数大于左操作数返回1,否则返回0。
1 <=> 2 # => -1
2 <=> 1 # => 1
1 <=> 1 # => 0
【讨论】:
它为特定类定义了比较。如果... < ...为真,则返回-1,如果... == ...为真,则0,如果... > ...为真,则返回1。
【讨论】:
对于核心数字和字符串类,它是一个返回 -1、0 或 1 的比较运算符。
理论上,一个类可以定义任何运算符来做它想做的任何事情,但这将是排序时使用的方法。如果需要对任意应用程序类进行排序,那么为任意应用程序类定义 <=> 可能是有意义的。
【讨论】: