Я разработал функцию, возвращающую таблицу объектов. Содержимое этого объекта еще не определено, но я хотел бы сделать глубокую копию между каждым вызовом (как в Java).Выполняет ли memoize глубокую копию Perl-объектов?
Как memoize возвращает возвращаемое значение? Это делает ее глубокой? Ничего не сказано, как ответы копируются перед возвратом в справке модуля Memoize
.
# How i solved the problem at first....
use Storable qw(dclone);
my $saved_value ; # undef
sub get_all {
return dclone($saved_value) if (defined $saved_value) ;
....
$saved_value = dclone($ans) ;
return $ans
}
Простое возвращение из вспомогательного объекта делает мелкую копию, если это не подделка ': lvalue'. – ikegami
У меня такой же результат. Функция 'foo' переустанавливается каждый раз, когда она вызывается без отсрочки:' foo(); #reexecution; foo() -> {...}; # no reexecution' –