如何理解ruby中的这段代码?

如何理解ruby中的这段代码?,ruby,Ruby,在元编程Ruby中,我看到了以下代码 class String def to_alphanumeric gsub /[^\w\s]/, '' end end 在这里,它为字母数字添加了一个方法,将标点替换为空格,并添加到标准类字符串中。让我困惑的是,既然我们没有指定gsub在哪个对象上工作,Ruby怎么知道在这里我们实际上是指gsub在字符串obj本身而不是其他对象上工作?或者换句话说,Ruby是否会自动将其重写为self.gsub Ruby中的隐式接收者总是self(当然,s

在元编程Ruby中,我看到了以下代码

class String
  def to_alphanumeric
    gsub /[^\w\s]/, ''
  end
end

在这里,它为字母数字添加了一个方法,将标点替换为空格,并添加到标准类字符串中。让我困惑的是,既然我们没有指定gsub在哪个对象上工作,Ruby怎么知道在这里我们实际上是指gsub在字符串obj本身而不是其他对象上工作?或者换句话说,Ruby是否会自动将其重写为self.gsub

Ruby中的隐式接收者总是
self
(当然,
self
在不同的上下文中是不同的)


Ruby本身不会“自动将其重写为
self.gsub
”,因为使用显式的
self
接收器调用私有方法会引发异常(并且
gsub
在这里无论如何都是一个公共方法)。

父方法、父方法和父方法等等,以找到一个方法,我感到困惑。gsub默认是私有的,那么你为什么说它“无论如何都是公共的”?