Ruby的!~
在哪里有记录?我期望它在Regexp page或String page,但它不在那里。虽然=~
在Regexp页面上出现了49次,在String页面上出现了8次。
答案 0 :(得分:5)
您可以使用method
查找方法所有者:
''.method(:!~)
#=> #<Method: String(Kernel)#!~>
//.method(:!~)
#=> #<Method: Regexp(Kernel)#!~>
!~
在Kernel
模块中定义,Object
包含该模块:
String.ancestors
#=> [String, Comparable, Object, Kernel, BasicObject]
Regexp.ancestors
#=> [Regexp, Object, Kernel, BasicObject]
并且因为Kernel
包含在(每个)Object
中,所以为了方便起见,它的实例方法记录在Object
中。 (或文件所说的“清晰度”,但IMO使其不那么明确)
所以这是:Object#!~
obj!〜other→true或false
如果两个对象不匹配(使用
true
方法),则返回=~
,否则返回false
。
答案 1 :(得分:2)
它是on Object
,因为它可以委托给任何=~
实现。