私が使用したい問題の方法がgem
であり、ここで調達(行17-42):あなたが見ることができるように、name
がライン19上の第一引数に割り当てられているhttps://github.com/rails/rails/blob/master/railties/lib/rails/generators/actions.rbメソッドが引数を変更するのを防ぐには?
、その後、message
はname
に割り当てられています23行目、最後にmessage
が<<
で26行目に変異しています。これは残念なことに、最初の引数として渡されている文字列がメソッド外で変更されていることを意味します。私は防ぐことができますどのように
groups => { foo: ["foo (42)", "bar (42)"], bar: ["foobar (42)"] }
:
はgroups = { foo: %w(foo, bar), bar: %w(foobar) }
groups.each do |group, gems|
gems.each do |name|
gem(name, "42")
end
end
その後、私のハッシュはgem
の内部変異に起因する以下のようになります。次のように
は、私は配列のハッシュを持ち、それらを反復処理していますこれらの文字列(およびハッシュとその配列)は変更されていますが、メソッドが破られることはありませんか?
文字列をフリーズすると、その文字列は突然変異しなくなりますが、例外が発生するだけです。 –