我有
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;。在什么基础上大于或小于?我还打印了每个字符串的长度,第一个小于第二个字符串。请解释一下。
答案 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
在后一个示例中,按长度进行排序。