这是什么意思比`>`少大于比较类`

问题描述 投票:4回答:4

我还没有找到运营商><>=<=ObjectClass文档中的任何说明。

String > Object      # => false
BasicObject > Object # => true
String > Integer     # => nil
ruby
4个回答
6
投票

当一流水平的比较完成后,它看起来层次/关系。

因为String > Object是祖先为ObjectString返回false。

类似随后将这个层次Object -> Numeric -> Integer

String > Integer返回nil,因为这两个类不相同的层次结构/关系来。


4
投票

正如你已经发现,这些方法不是Object也不对Class定义。

在你的榜样,他们在Module定义,这是Class的父母。读的地方周围here

当你想知道在哪个类中的方法定义,使用owner

String.method(:>).owner # => Module

1
投票

它可能不是很清楚,在第一,但实际上>是一个方法,所以你可以尝试以获取有关其与method方法的详细信息:

String.method(:>)
# #<Method: Class(Module)#>>

这意味着该方法在Module定义,并且被称为Class对象上。


0
投票

Comparable用于比较。

由于类是使用它或实现<=>方法,它们可以在接收器比较针对另一个目的,返回-1,0或1取决于接收机是否比其他对象小于,等于或大于。

但在一流水平,层次取考虑。

© www.soinside.com 2019 - 2024. All rights reserved.