memoize是否会对perl对象进行深层复制?

时间:2015-01-14 16:52:26

标签: perl memoization

我设计了一个返回对象表的函数。这些对象的内容尚未定义,但我想在每次调用之间进行深层复制(如在Java中)。

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
}

1 个答案:

答案 0 :(得分:4)

试试看?

use Memoize;
sub foo { {bar=>[1..4]} }
memoize('foo');
foo()->{'bar'}[3] = 5;
print foo()->{'bar'}[3];

打印5,因此不会进行深层复制。如果它甚至可以制作一个浅色的副本,我就会离开。