2009-02-03 7 views
4

워드 프로세서 (수출 및 perlmodlib)의 말 : 일반적으로Perl에서 순수 객체 지향을 사용할 경우 Exporter가 필요합니까?

를, 모듈은 객체가 수출 아무것도를 지향하지 되려고 노력 경우.

표준, 번들 모듈은 그들이 수출 모듈을 사용하기 때문에 오염을 네임 스페이스와 관련하여 잘 정의 된 방식으로 행동 할 것으로 예상 모든 :

그러나 말한다 또한 perlmodlib.

OO로 내보내고 내보내지 않으면 Exporter가 필요합니까? 그렇지 않다면 표준 모듈 중 어느 것도이 의미에서 엄격히 OO가 아니라는 뜻입니까 아니면 누군가가 모듈에서 상속 받기를 원한다면 그렇게해야하기 때문에 어떤 의미가 있습니까? (사실입니까?) 아니면 use MyModule; ... = new MyModule 수 있도록 내보내기가 필요하십니까?

답변

7

정확합니다. 모든 것이 OBJECT :: sub() 또는 $ obj-> sub()라고 불리면 잘 될 것입니다.

상속을 위해서는 @ISA를 사용하고 싶으므로 수출 업체가 필요하지 않습니다.

또한 두 번째 인용문은 내 보낸 데이터가 모듈로 쏟아지는 것과 관련이 있습니다.

내보내기를 사용하여 내보내는 lib에 대해 use libname();을 사용하면 아무 것도 내보낼 수 없습니다. 이것이 네임 스페이스 오염을 방지하는 방법입니다. 함수 이름으로 명시 적으로 내보내는 경우 사용자가 가져 오는 유일한 함수입니다.

+0

나는 내 질문에 답한 Pod :: Template을 찾았지만, @ISA가 거기에 있다는 것에 의아해했지만 아직 사용되지는 않았다. 그래서 그것을 분명히합니다 - 많은 감사합니다! – Kev