Как я делаю мелкую копию ссылки хеша Perl?

Я хочу продвинуть ссылку на хеш. Этим я подразумеваю, что хочу продвинуть ссылку на новый хеш, который является мелкой копией хеша, который мне дают.

Как я создаю мелкую копию?

11
задан brian d foy 9 January 2010 в 00:02
поделиться

1 ответ

Просто скопируйте его:

 my %copy = %$hash;

Если вам нужна другая ссылка, просто разверните исходную ссылку в анонимном конструкторе хэша:

 my $copy = { %$hash };

Для тех, кто интересуется мелкими копиями: такое присваивание только делает новые значения для ключей верхнего уровня. Любые значения, являющиеся ссылками, по-прежнему будут той же ссылкой в ​​новом хэше. То есть вы можете заменить значение в новом хэше, не изменяя исходный хеш. Если вы просто измените значение, например, вставив новый элемент в значение анонимного массива, оба хэша получат изменение, потому что они используют одну и ту же ссылку. Таким образом, неглубокие копии обычно не то, что вам нужно.

31
ответ дан 3 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: