首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby中的组合比较运算符是什么?

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

Stack Overflow用户
提问于 2015-12-16 14:48:53
回答 3查看 54关注 0票数 1

我有过

代码语言:javascript
复制
book_1 = "War & Peace"
book_2 = "The Nest of Gentry"
puts book_1.length
puts book_2.length
print book_1 <=> book_2    

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

EN

回答 3

Stack Overflow用户

发布于 2015-12-16 14:53:27

在比较两个字符串时,大多数编程语言都会返回“在标准字典中最先找到谁?”这也被称为“字典序”。

票数 3
EN

Stack Overflow用户

发布于 2015-12-16 15:08:43

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

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

代码语言:javascript
复制
"abcdef" <=> "abcde"     #=> 1
"abcdef" <=> "abcdef"    #=> 0
"abcdef" <=> "abcdefg"   #=> -1
"abcdef" <=> "ABCDEF"    #=> 1

希望这能帮到你。

票数 0
EN

Stack Overflow用户

发布于 2015-12-16 15:08:55

很难相信,如今人们更愿意在维基百科上查找关于这类问题的答案。Ruby有一个很棒的文档:String#<=>。通过点击此描述右上角的“切换源”,可以很容易地看到“默认”比较是使用rb_str_cmp进行的,显然是使用“字典序”进行排序。另一方面,在所有Comparable场景中都使用<=>运算符,因此可以轻松地修改字符串列表的排序行为:

代码语言:javascript
复制
class String
  def <=> other
    other = other.to_s unless other.is_a? String # or raise an exception
    self.length <=> other.length
  end
end

["War & Peace", "Zoo", "Aleph", "The Nest of Gentry"].sort
#⇒ ["Zoo", "Aleph", "War & Peace", "The Nest of Gentry"]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34305561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档