【问题标题】:Operator <=> in Ruby [duplicate]Ruby 中的运算符 <=> [重复]
【发布时间】:2012-11-06 16:49:16
【问题描述】:

可能重复:
What is the Ruby <=> (spaceship) operator?

我看到了一个我不熟悉的代码和一个运算符

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

我不能用谷歌搜索它。 &lt;=&gt; 是做什么的?

【问题讨论】:

标签: ruby


【解决方案1】:

这是the spaceship operator,它是从 Perl 借来的。常用于排序,因为左操作数小于右操作数返回-1,右操作数大于左操作数返回1,否则返回0。

1 <=> 2 # => -1
2 <=> 1 # => 1
1 <=> 1 # => 0

【讨论】:

    【解决方案2】:

    它为特定类定义了比较。如果... &lt; ...为真,则返回-1,如果... == ...为真,则0,如果... &gt; ...为真,则返回1

    【讨论】:

    • 我的回答中有一个链接:)
    【解决方案3】:

    它叫the spaceship operator.

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2011-03-14
      • 2013-01-02
      • 2013-12-02
      • 2011-03-10
      • 2015-10-22
      相关资源
      最近更新 更多