2017-01-28 5 views
0

Я хочу очистить массив после объявления хэш-значения И разрешить сохранение хеш-значения. Возможно ли это?Очистка массива без разрушения ссылки

hash = {} 
number= "number" 
array = [1,2,3,4,5,6] 
hash[number]=array 

Это ожидаемый результат после очистки массива.

{"number"=>[1, 2, 3, 4, 5,6]} 
+0

Я хочу очистить массив, таким образом, я могу добавить новые элементы после того, как они были назначены хешу. – olafsadventures

ответ

5
hash[number] = array.dup 
array.clear 
hash 
=> {"number"=>[1, 2, 3, 4, 5, 6]} 

Если array содержит только простые объекты (как целые числа), вы можете использовать dup метод. В противном случае вам нужна глубокая копия.

+0

Yippee! Это сработало. – olafsadventures

+0

Даже с другими объектами вероятность того, что 'dup' - лучший выбор, маловероятно, что люди когда-либо захотят клонировать объекты внутри массива. – akuhn

Смежные вопросы