我刚刚开始使用 Ruby,并且遇到了我无法解释的非常奇怪的方法行为。例如:
class String
def substitute
gsub("a", "b")
end
end
puts "aa".substitute # outputs: "bb"
怎么会这样?我没有将任何参数传递给“替代”方法,它如何知道要在哪个字符串上调用该gsub
方法?gsub
在可以省略的方法之前是否有一些不可见的属性?
在我看来,这是一种“通常”的方法应该如何工作。它得到一个参数并对该数据进行操作。(但是,在前面的示例中,没有gsub
可以操作的数据?)
def substitute(arg)
arg.gsub("a", "b")
end