对我来说,Perl引用是一件很难理解的事情。在阅读使用对象方法的类OO脚本时,我从来没有看到用作参考的对象。即使对于大对象,也可以从被用作参考而不是被复制到子程序(方法)中受益。Perl方法和通过引用
$p->a_method($value);
在幕后,Perl的运行
a_method($p, $value);
但如果$p
是巨大的物体,也不会想要把它作为一个参考?
a_method(\$p, $value)
我一直都明白,如果对象很大,通过引用可以导致显着的速度增加。在面向对象中,很可能你正在处理大型对象(例如巨大的XML::Twig
)。那么当你真的把它作为子程序的参考传递时,你如何在这样的对象上调用一个方法?
尼特:'$ P-> a_method($值)'不一定需要在当前包子作为报价暗示。 '$ p-> a_method($ value)'更接近'my $ sub = $ p-> can('a_method') - >($ p,$ value);' – ikegami
'$ p'是一个引用(a你不能算术的指针),并且引用通过引用传递(因为所有参数都是通过Perl中的引用传递的)。这两个(独立地)使对象的大小与方法调用无关,前者使对象的大小与'my $ self = shift'无关。 – ikegami