나를 위해 Perl 참조는 파악하기가 어렵습니다. 객체 메소드를 사용하는 객체 지향 스크립트와 같은 것을 읽을 때 객체를 참조로 사용하는 것을 본 적이 없다. 대형 객체의 경우에도 서브 루틴 (메소드)에 복사되는 대신 참조로 사용하면 도움이됩니다. 장면 뒤에Perl 메서드 및 참조로 전달
$p->a_method($value);
는, 펄이
a_method($p, $value);
를 실행하지만 $p
거대한 물체가있는 경우, 당신은로 전달 싶지 않을 것이다 :
PerlMaven는 말한다 참고?
a_method(\$p, $value)
나는 객체가 큰 경우 참조로 전달하면 속도가 크게 높아질 수 있다는 것을 항상 알고 있습니다. OO에서는 대용량 객체 (예 : 거대한 XML::Twig
)로 작업하고있을 가능성이 큽니다. 그렇다면 실제로 서브 루틴을 참조로 전달할 때 이러한 객체에 대한 메서드를 어떻게 호출할까요?
NIT :'$ P-> 그 인용문에서 알 수 있듯이 a_method ($ 값)'반드시 현재 패키지에서 하위를 호출하지 않습니다. '$ p-> a_method ($ value)'는'my $ sub = $ p-> can ('a_method') -> ($ p, $ value)에 더 가깝다 ' – ikegami
'$ p'는 참조 포인터는 당신이 산술을 할 수 없다), 그리고 참조는 (모든 인수가 Perl에서 참조로 전달되기 때문에) 참조로 전달된다. 그것들 둘다 (독립적으로) 객체의 크기를 메소드 호출과 무관하게 만든다. 그리고 전자는'my $ self = shift; '와는 무관 한 객체의 크기를 만든다. – ikegami