2009-02-03 57 views
4

該文檔(出口商和閱讀perlmodlib)說:如果我要在Perl中使用純OO,我需要Exporter嗎?

作爲一般規則,如果模塊是 努力成爲面向對象然後 出口罷了。

但後來閱讀perlmodlib也說:

標準,捆綁模塊都 預計在一個定義良好的 方式表現方面,因爲它們使用 Exporter模塊到命名空間 污染。

所以我想知道,如果你去OO並且什麼都不輸出,你真的需要出口商嗎?如果你不這樣做,這是否意味着在這個意義上,沒有一個標準模塊是嚴格的OO,或者這意味着他們有些事情,因爲如果有人想從你的模塊繼承,你需要這樣做? (這是真的嗎?)或者您需要出口商才能夠use MyModule; ... = new MyModule

回答

7

你是對的。如果一切都會被稱爲OBJECT :: sub()或$ obj-> sub(),你應該沒問題。

對於繼承,您將要使用@ISA,爲此,您不應該需要導出器。

另外,您給出的第二個引用是關於導出到模塊中的數據。

如果您使用:use libname();針對使用導出程序導出的庫,則保證不導出任何內容。這就是它可以用來防止命名空間污染的方式。如果您通過函數名稱顯式導出,那麼這些是您獲得的唯一函數。

+0

我剛剛發現了Pod :: Template,它回答了我的問題,但是我被@ISA困惑在裏面,卻沒有被使用。所以澄清它 - 非常感謝! – Kev 2009-02-03 13:57:47

相關問題