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
我知道何时何地可以使用等于,但何时何地可以使用比较 <=>
谢谢
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
我知道何时何地可以使用等于,但何时何地可以使用比较 <=>
谢谢
什么时候比较?它返回 -1, 0, 1。例如,按名字对用户进行排序:
users_by_first = users.sort { |u1, u2| u1.fname <=> u2.fname }
<=> 通用比较运算符。返回 -1、0 或 +1,具体取决于其接收者是小于、等于还是大于其参数。
http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html
一方面,这对于排序很有用。
== 运算符,也称为相等或双重相等,如果两个对象相等则返回 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 运算符的更多信息,请参阅此博客文章。