memoize 是否对 perl 对象进行深度复制?
Does memoize do a deep copy of perl objects?
我设计了一个return一个table对象的函数。这些对象的内容尚未定义,但我想在每次调用之间进行深度复制(如 Java)。
memoize 如何恢复 return 值?它是否对它进行深拷贝?在 Memoize
模块帮助中 returned 之前没有说明如何复制答案。
# 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
}
试试看?
use Memoize;
sub foo { {bar=>[1..4]} }
memoize('foo');
foo()->{'bar'}[3] = 5;
print foo()->{'bar'}[3];
打印 5,因此它不会进行深度复制。我离开看看它是否能制作一个浅拷贝作为练习。
我设计了一个return一个table对象的函数。这些对象的内容尚未定义,但我想在每次调用之间进行深度复制(如 Java)。
memoize 如何恢复 return 值?它是否对它进行深拷贝?在 Memoize
模块帮助中 returned 之前没有说明如何复制答案。
# 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
}
试试看?
use Memoize;
sub foo { {bar=>[1..4]} }
memoize('foo');
foo()->{'bar'}[3] = 5;
print foo()->{'bar'}[3];
打印 5,因此它不会进行深度复制。我离开看看它是否能制作一个浅拷贝作为练习。