ruby がクラスのインスタンス変数を上書きするのはなぜ@var1
ですか?
require 'pp'
class Foo
@@def = { :key1 => "someval1", :key2 => "someval2" }
def initialize
@var1 = @var2 = @@def
@var1[:key1] = "newval1"
@var2[:key1] = "newval2"
pp(@var1)
pp(@var2)
end
end
f = Foo.new
出力
{:key1=>"newval2", :key2=>"someval2"}
{:key1=>"newval2", :key2=>"someval2"}
どうしてこうなったのか教えてください。どうすればそれを回避できますか?