すぐわかる オブジェクト指向 Perl 第8章 モジュールを使う use
モジュールのバージョン
@EXPORT
に$VERSION
変数を指定しておく事でモジュールがuse
した時のチェックを行う事が出来る、と- モジュール側で
package hogehoge; our @EXPORT = qw($VERSION); our $VERSION = "1.0";
としておいて、呼び出し側はこう
use hogehoge 2.0;
とするとエラーになる
おなじみ use
use strict
よく使うというか必須だよねしかし、そこで何をしているかは考えた事も無かった・・・
use モジュール名
;
という1つの文は、次の4行のプログラムと全く同じ動作になります。
BEGIN {
require モジュール名;
import モジュール名;
}なるほど
- つまり
use
はモジュールを読み込んで、さらにモジュール内の変数やサブルーチンをimport
すると- そのまんまやねん
うなる
変数は
my
をつけてレキシカル変数にする事で完全にプライバシーを守れ、モジュール外から見る事ができなくなりますが、サブルーチンだけは完全修飾名を使う事でモジュール外から見る事ができてしまいます。では、モジュール外からアクセスできないサブルーチンを定義する事はできるでしょうか?
our
をつけた変数やサブルーチンは当然外から参照ができる。my
をつけると外から参照ができない。- これはもしや、オブジェクト指向でいうカプセル化!?隠蔽化ってやつ!?
- うちのオブジェクト指向の主な知識は情報処理試験と「オブジェクト指向でなぜつくるのか 第2版 」です
- それはともかく、どうやって・・・
答えは、できます。ちょっと難しい話ですが、ここまでの知識で答えられるのでちょっと考えてみてください。
はいおわかりですか。無名サブルーチンリファレンスを使って、それをmy変数に代入すれば良いですね。
これをプライベートメソッドと言います。
- なるほど!