Ruby等于vs比较;

时间:2012-08-08 01:21:21

标签: ruby ruby-1.9.3

我需要帮助才能理解 - Equal toComparison之间的区别是什么?

以下是案例

    x == y means `Equal to`

    x = 10 and y = 10

    puts "X and Y are equal" if x == y

    puts "X and Y are equal" if x <=> y

我知道我何时何地可以使用等于,但我何时何地可以使用比较&lt; =&gt;

由于

3 个答案:

答案 0 :(得分:0)

什么时候想比较?它返回-1,0,1。例如,按名字排序用户:

users_by_first = users.sort { |u1, u2| u1.fname <=> u2.fname }

这是another SO question asking about the spaceship operator

答案 1 :(得分:0)

  

&LT; =&GT;一般比较运算符。返回-1,0或+1,具体取决于其接收者是否小于,等于或大于其参数。

http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html

这对于排序很有用。

答案 2 :(得分:0)

等于运算符:==和!=

==运算符,也称为等于或等于,如果两个对象都相等则返回true,否则返回false。

"koan" != "discursive thought" # Output: => true

!=运算符,AKA不等式或bang-tilde,与==相反。如果两个对象不相等则返回true,如果它们相等则返回false。

2 == 2.0 # Output: => true

请注意,具有不同顺序的相同元素的两个数组不相等,同一个字母的大写和小写版本不相等,依此类推。

当比较不同类型的数字(例如,整数和浮点数)时,如果它们的数值相同,==将返回true。

5 <=> 8  # Output:  => -1
5 <=> 5  # Output: => 0
8 <=> 5  # Output: => 1

比较运算符

诸如数字和字符串之类的对象,可以在比其他对象更大或更小的情况下(它们之间)进行比较,提供&lt; =&gt;。方法,也称为宇宙飞船方法。比较两个对象时,&lt; =&gt;如果第一个对象小于第二个对象(a&lt; b),则返回-1;如果它们相等(a == b)则返回0;如果第一个对象大于第二个对象(a> b),则返回1。 / p>

# String
"a" < "b" # Output: => true
"a" > "b" # Output: => false

# Symbol
:a < :b  # Output: => true
:a > :b  # Output: => false

# Fixnum (subclass of Integer)
1 < 2  # Output: => true
2 >= 2  # Output: => true

# Float
1.0 < 2.0 # Output: => true
2.0 >= 2.0 # Output: => true

# Time
Time.local(2016, 5, 28) < Time.local(2016, 5, 29) # Output: => true

大多数可比较或可排序的对象类(如Integer,Float,Time和String)包含一个名为Comparable的mixin,它提供以下比较运算符:&lt; (小于),&lt; =(小于或等于),==(相等),&gt; (大于),&gt; =(大于或等于)。这些方法使用了太空船操作员。

比较运算符可用于所有上述类的对象,如以下示例所示。

# Fixnum vs. Float
2 < 3.0  # Output: => true
2.0 > 3  # Output: => false

比较不同类的数量时,比较运算符将隐式执行简单类型转换。

arg2.replace(/\s+/, ""); 

有关Ruby运算符的更多信息,请访问this blog post