splat 演算子のカスタム結果を書き込むには、to_a
メソッドを実装する必要があります。String クラスの例:
class String
def to_a
self.split //
end
end
irb> res = *'text'
=> ["t", "e", "x", "t"]
to_a
しかし、上記のモンキーパッチがなければ、String クラスはメソッドについて何も知りません。
irb> String.respond_to? :to_a
=> false
問題は、標準の「パッチが適用されていない」文字列のオブジェクトに splat 演算子を適用すると、どのメソッドが呼び出されるかということです。
irb> res = *'text'
=> ['text']