要编写 splat 运算符的自定义结果,必须实现to_a
方法。字符串类的示例:
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']