해시가 포함되어있는 이있는 (비트 사용자 지정) 싱글 톤이 있습니다.Ruby에서 Singleton의 인스턴스 변수의 복제 된 값을 얻는 방법은 무엇입니까?
이 데이터를 가져오고 거기에 특정 값을 추가하고 싶습니다. 내가 변수로 데이터를 설정할 때 는하지만, 그 변수는 링크를 포함 된 데이터에가 아닌 는을 복사 밝혀졌습니다.
내 '싱글'의 코드 업데이트]:
class Company
FILE_PATH = "#{Rails.root}/config/company.yml"
attr_reader :data
def self.instance
@instance ||= new
end
def self.path
FILE_PATH
end
def save data
File.open(FILE_PATH, 'w') { |file| file.write(data.to_yaml) }
set_data
end
private
def initialize
set_data
end
def set_data
@data = HashWithIndifferentAccess.new(YAML.load(File.read(FILE_PATH)))
end
end
사용 예 :
Company.instance.data[:bar]
=> nil
foo = Company.instance.data
foo[:bar] = 'buzz'
Company.instance.data[:bar]
=> 'buzz'
이 어떻게 변수에 데이터의 사본을 넣을 수 있습니다? .dup
과 .copy
을 시도했지만 도움이되지 않았습니다.
(UPD :... 내가하지 data
에 instance
에 이러한 방법을 사용하려고했습니다 나에게 대답 내 잘못 모두에게 감사)
'attr_reader : data'는 중복됩니다. – Aetherus
네 말이 맞아. 어쩌면 내가 정보를 충분하게 제공하지 않았고, 좀 더 복잡한 경우가 있습니다. –
@Aetherus 당신 말이 맞아요, 고마워요! –