1

私はプログラミングの初心者であり、Ruby の初心者ですが、とにかく私の仕事に役立つと思います。現在、私は次の意図しない効果をもたらしたかなり大きなスクリプトに取り組んでいます。

def my_reduce_method(value_hash,some_keys)
  value_hash.delete(some_keys) 
end

puts all_values
=> all_values

some_values = all_values # start my block with all values (class: hash)

some_values = my_reduce_method(some_values,keys_to_reduce) 
# here only some_values should be effected!

puts all_values
=> some_values

ブロックに損傷はありませんが、元の all_values は失われています! 特定のコード ブロックで特定の変数が確実に変更されないようにするにはどうすればよいですか?

ご意見をお寄せいただきありがとうございます!!!

4

2 に答える 2

0

Object#clone は、frozen 属性と singleton メソッドを保持します。それらが必要ない場合、例に何が起こるか、 Object#dup で十分です。

于 2013-11-14T19:40:32.593 に答える