1

Equal to我需要帮助来理解 -和有什么区别Comparison

这是案例

    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

我知道何时何地可以使用等于,但何时何地可以使用比较 <=>

谢谢

4

3 回答 3

0

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

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

这是另一个关于宇宙飞船操作员的问题

于 2012-08-08T01:27:52.993 回答
0

<=> 通用比较运算符。返回 -1、0 或 +1,具体取决于其接收者是小于、等于还是大于其参数。

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

一方面,这对于排序很有用。

于 2012-08-08T01:28:07.840 回答
0

等式运算符:== 和 !=

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

"koan" == "koan" # Output: => true

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

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

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

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

2 == 2.0 # Output: => true

比较运算符

诸如数字和字符串之类的对象可以(在它们自身之间)根据是否大于或小于其他对象进行比较,它们提供了 <=> 方法,也称为 spaceship 方法。比较两个对象时,如果第一个对象小于第二个对象 (a < b),<=> 返回 -1,如果它们相等 (a == b),则返回 0,如果第一个对象大于第二个对象,则返回 1 ( a > b)。

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

大多数可比较或可排序的对象类,例如 Integer、Float、Time 和 String,都包含一个名为 Comparable 的 mixin,它提供以下比较运算符:<(小于)、<=(小于或等于)、==(等于) , >(大于),>=(大于或等于)。这些方法在引擎盖下使用了宇宙飞船操作符。

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

# 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

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

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

有关 Ruby 运算符的更多信息,请参阅此博客文章

于 2016-05-29T16:54:47.550 回答