gpt4 book ai didi

perl - Perl 中的弱引用

转载 作者:行者123 更新时间:2023-12-05 00:48:49 25 4
gpt4 key购买 nike

如何在perl中创建对对象的弱引用,这样当对象超出范围时,引用计数就会被释放?
我尝试使用 DESTROY 子来打破循环引用。

sub DESTROY{  
my $p = shift;
delete $p->{__tree__};
delete $p->{tokenizers};
delete $p->{toke};
}

请帮忙。

最佳答案

您不能“调用”destroy - 这里的问题是 perl 对引用计数起作用 - 对事物的每个引用都会被计数,并且 当引用计数降至零时,它可以被释放/销毁/垃圾收集。

DESTROY 是一种特殊方法,在对象内调用以执行清理任务当这种情况发生时。它不会删除对象,它只是让它在它死后做一些最后的整理。

看看Scalar::Util模块。它包括 weaken 方法,该方法完全符合您的要求。

The lvalue $ref will be turned into a weak reference. This means that it will not hold a reference count on the object it references. Also when the reference count on that object reaches zero, the reference will be set to undef. This function mutates the lvalue passed as its argument and returns no value.

This is useful for keeping copies of references, but you don't want to prevent the object being DESTROY-ed at its usual time.

关于perl - Perl 中的弱引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31021741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com