Я визнаю, що я трохи рубіновий новачок (зараз пишу граблі-сценарії). У більшості мов конструктори копій легко знайти. Півгодини пошуку не знайшли його в рубіні. Я хочу створити копію хешу, щоб я міг її змінити, не впливаючи на оригінальний екземпляр.
Деякі очікувані методи, які не працюють за призначенням:
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
предметами, надана відповідь хороша. Якщо ви маєте справу з об'єктами, схожими на хеш, які надходять з місць, якими ви не керуєте, вам слід розглянути питання про те, чи хочете ви, що дублюється однотонний клас, асоційований з Hash, дублюється чи ні. Дивіться stackoverflow.com/questions/10183370/…