在哪里!〜有记录吗?

时间:2017-10-15 11:46:59

标签: ruby regex operators

Ruby的!~在哪里有记录?我期望它在Regexp pageString page,但它不在那里。虽然=~在Regexp页面上出现了49次,在String页面上出现了8次。

2 个答案:

答案 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,因为它可以委托给任何=~实现。