Ruby中的组合比较运算符是什么?

时间:2015-12-16 06:48:53

标签: ruby

我有

book_1 = "War & Peace"
book_2 = "The Nest of Gentry"
puts book_1.length
puts book_2.length
print book_1 <=> book_2    

返回值1?维基百科说&#34;如果左参数大于右参数,则运算符返回1.&#34;。在什么基础上大于或小于?我还打印了每个字符串的长度,第一个小于第二个字符串。请解释一下。

3 个答案:

答案 0 :(得分:3)

比较两个字符串时,大多数编程语言都会回答“你会先在标准字典中找到谁?”的问题。 这也称为“词典顺序”

答案 1 :(得分:0)

字符串与词典顺序比较。 Ruby-Doc String

正如ruby官方文档中提到的那样 如果字符串具有不同的长度,并且在比较最短长度时字符串相等,则认为较长的字符串大于较短的字符串。 <=>是模块Comparable中包含的方法<, <=, >, >=, and between?,的基础。方法String#==不使用可比较#==

"abcdef" <=> "abcde"     #=> 1
"abcdef" <=> "abcdef"    #=> 0
"abcdef" <=> "abcdefg"   #=> -1
"abcdef" <=> "ABCDEF"    #=> 1

希望这能帮到你......

答案 2 :(得分:0)

很难相信现在人们更愿意维基百科在这类问题上寻找答案。 Ruby有一个很好的文档:String#<=>。 通过单击本说明书右上角的“切换源”,可以很容易地看到“{1}}正在进行”默认“比较,这显然是使用”词典顺序“进行排序。 另一方面,rb_str_cmp运算符用于所有<=>场景,因此可以轻松修改字符串列表的排序行为:

Comparable

在后一个示例中,按长度进行排序。