私はPerlで純粋なOOのためつもりならば、私は輸出が必要ですか?
-
21-08-2019 - |
質問
文書(輸出とはperlmodlibは)言います:
一般的な規則として、モジュールがある場合 その後、オブジェクト指向にしよう 輸出無ます。
しかし、その後も言うはperlmodlibます:
標準、バンドルされたモジュールがすべてです 明確に定義された中で動作するように期待 名前空間に関して方法 汚染彼らが使用しているため、 輸出モジュールます。
だから私は、あなたがOOと輸出は何も行っていない場合、あなたは本当に輸出業者が必要なのでしょう、だろうか?そうしない場合、それは標準モジュールのどれもが、厳密にこの意味でOOではない、またはあなたがする必要があるので、それは、誰かがあなたのモジュールから継承したい場合ことを、彼らはいくつかのことをEXPORT_OK
意味するのか?ということを意味しませんか(?というのは本当です)それとも、ただuse MyModule; ... = new MyModule
ことができるように輸出業者が必要なのでしょうか?
解決
あなたは正しいです。すべてがOBJECT ::サブ()または$ obj->サブ()が呼び出される場合、あなたは問題ないはずです。
継承のために、あなたは@ISAを使用するようにするつもりだ、とそのために、あなたが輸出を必要はありません。
また、あなたが与えた二重引用符は、モジュールに注ぐエクスポートされたデータに関してである。
あなたが使用している場合は、:輸出業者を使用してエクスポートLIBに対してuse libname ();
を、あなたは何をエクスポートしないことが保証されています。つまり、名前空間の汚染を防止するために用いることができる方法です。あなたが明示的に関数名でエクスポートした場合、それらはあなたが得るだけの機能です。