我正在阅读 Metaprogramming Ruby 书,并且有一些我无法理解的方法:
def to_alphanumeric(s)
s.gsub /[^\w\s]/, ''
end
我看到有参数变量(s),它最近被调用并转换为一些奇怪的表达式?我到底能用这种方法做什么,他有用吗?
以下方法工作得很好:
def to_alphanumeric(s)
s.gsub %r([aeiou]), '<\1>'
end
p = to_alphanumeric("hello")
p p
>> "h<>ll<>"
但是如果我将方法升级到类,只需调用方法+ argv to_alphanumeric,就不再起作用了:
class String
def to_alphanumeric(s)
s.gsub %r([aeiou]), '<\1>'
end
end
p = to_alphanumeric("hello")
p p
undefined method `to_alphanumeric' for String:Class (NoMethodError)