對我來說,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