我想使用的有问题的方法在gem这里(第 17-42 行):https ://github.com/rails/rails/blob/master/railties/lib/rails/generators/actions.rb
如您所见,name在第 19 行分配给第一个 arg,然后在第 23 行message分配给name,最后message在第 26 行用<<. 不幸的是,这意味着我作为第一个参数传入的字符串在方法之外发生了变异。
我有一个数组哈希,并按如下方式迭代它们:
groups = { foo: %w(foo, bar), bar: %w(foobar) }
groups.each do |group, gems|
gems.each do |name|
gem(name, "42")
end
end
之后,由于内部的突变,我的哈希看起来像这样gem:
groups => { foo: ["foo (42)", "bar (42)"], bar: ["foobar (42)"] }
如何在不破坏方法的情况下防止这些字符串(以及哈希及其数组)发生突变?