在Metaprogramming Ruby中,我看到了这段代码
class String
def to_alphanumeric
gsub /[^\w\s]/, ''
end
end
Run Code Online (Sandbox Code Playgroud)
在这里,它添加了一个方法to_alphanumeric,它将带有空格的标点符号替换为标准类String.让我感到困惑的是,既然我们没有指定gsub在哪个对象上运行,那么Ruby在这里如何知道我们实际上是指gsub在String obj本身上工作而不是其他什么?或者换一种说法,Ruby会自动将其重写为self.gsub吗?
Ruby中的隐式接收器总是self(self当然,在不同的上下文中是不同的).
Ruby没有"自动改写它作为self.gsub" 本身,因为调用带有明确的私有方法self接收器将抛出一个异常(并且gsub是一个公共方法在这里反正).
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |