【发布时间】:2013-01-15 16:23:48
【问题描述】:
要编写 splat 运算符的自定义结果,必须实现 to_a 方法。 String 类的示例:
class String
def to_a
self.split //
end
end
irb> res = *'text'
=> ["t", "e", "x", "t"]
但是没有上面的monkeypatch,String类对to_a方法一无所知:
irb> String.respond_to? :to_a
=> false
所以问题是,在标准的“未修补”字符串对象上应用 splat 运算符时会调用什么方法?
irb> res = *'text'
=> ['text']
【问题讨论】:
-
不要用字符串覆盖
*。它已被用作'a' * 2 => 'aa'。改变其行为会导致代码维护人员发疯。
标签: ruby monkeypatching