就我如何理解这个问题提供一些背景信息。
在字符串上使用 splat collect 将 :to_a 或 :to_ary 发送到字符串
class String
def method_missing method, *args, &block
p method #=> :to_ary
p args #=> []
p block #=> nil
end
end
*b = "b"
所以我在想重新定义 :to_ary 方法将是我所追求的。
class String
def to_ary
["to_a"]
end
end
p *a = "a" #=> "a"
p a #=> "a"
*b = "b"
p b #=> ["to_a"]
现在,这让我无所适从。
从 *a = "a" 打印结果会更改分配给 a?
为了进一步证明
class String
def to_ary
[self.upcase!]
end
end
p *a = "a" #=> "a"
p a #=> "a"
*b = "b"
p b #=> ["B"]