0

在 Metaprogramming Ruby 中,我看到了这段代码

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

在这里,它向标准类 String 添加了一个 to_alphanumeric 方法,该方法用空格替换标点符号。令我困惑的是,由于我们没有指定 gsub 作用于哪个对象,Ruby 怎么知道我们实际上是指 gsub 作用于 String obj 本身而不是其他东西?或者换一种说法,Ruby 会自动重写为 self.gsub 吗?

4

1 回答 1

7

Ruby 中的隐式接收器总是selfself当然,在不同的上下文中是不同的)。

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

于 2013-03-23T20:56:59.313 回答