Я признаю, что я немного новичок в рубине (сейчас пишу сценарии рейка). На большинстве языков легко найти конструкторы копирования. Полчаса поиска не нашел его в рубине. Я хочу создать копию хэша, чтобы я мог изменить ее, не затрагивая исходный экземпляр.
Некоторые ожидаемые методы, которые не работают должным образом:
h0 = { "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash
В то же время я прибег к этому неумелому обходному пути
def copyhash(inputhash)
h = Hash.new
inputhash.each do |pair|
h.store(pair[0], pair[1])
end
return h
end
Hash
объектами, предоставленный ответ будет хорошим. Если вы имеете дело с хеш-подобными объектами, которые происходят из мест, которые вы не контролируете, вам следует подумать, хотите ли вы, чтобы синглтон-класс, связанный с хеш-копированием, дублировался или нет. См. Stackoverflow.com/questions/10183370/…