我想使用的有问题的方法在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)"] }
如何在不破坏方法的情况下防止这些字符串(以及哈希及其数组)发生突变?