왜 루비가 클래스 인스턴스 변수 @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"}
이 일어난 이유를 말 해주세요. 어떻게 피할 수 있습니까?