는 I 클래스 같이 가지고클래스의 상수 값이 변경되는 이유는 무엇입니까?
class Example
DEFAULT_VALUE = {
'first_key': ['a', 'b'],
'second_key': 'c'
}
def append_new_value(value)
default_value_copy = DEFAULT_VALUE
default_value_copy[:first_key] << value
puts "default_value_copy: #{default_value_copy}"
puts "DEFAULT_VALUE: #{DEFAULT_VALUE}"
end
end
example = Example.new
example.append_new_value('d')
example.append_new_value('e')
결과이다 : 전에 알 수 있듯이
default_value_copy: {:first_key=>["a", "b", "d"], :second_key=>"c"}
DEFAULT_VALUE: {:first_key=>["a", "b", "d"], :second_key=>"c"}
default_value_copy: {:first_key=>["a", "b", "d", "e"], :second_key=>"c"}
DEFAULT_VALUE: {:first_key=>["a", "b", "d", "e"], :second_key=>"c"}
, DEFAULT_VALUE의 값 append_new_value
메소드를 호출 한 후 변경되지 않아야한다.
이 사례에 대해 설명해 주시겠습니까?
상수는 변경되지 않습니다. 상수가 참조하는 객체입니다. 루비는 순전히 기능적인 언어가 아니며, 객체는 변경 될 수 있습니다. –