our @ISA = "Critter";
どの条件で使用し@ISA
ますか?
そしてなぜour @ISA
?
マットのコメントを拡張するために、このようなものはに広範囲に文書化されていperldocs
ます。
に関して@ISA
、これはそれが言うことです:
クラスは単なるパッケージです
..。
各パッケージには、と呼ばれる特別な配列が含まれています
@ISA
。配列には、その@ISA
クラスの親クラス(存在する場合)のリストが含まれています。この配列は、Perlがメソッド解決を行うときに調べられます。これについては後で説明します。手動で設定することは可能で
@ISA
あり、これは古いPerlコードで見られる場合があります。はるかに古いコードもbase
プラグマを使用します。新しいコードの場合、parent
プラグマを使用して親を宣言することをお勧めします。このプラグマが設定を処理します@ISA
。また、親クラスをロードし、パッケージがそれ自体から継承しないことを確認します。親クラスが設定されていても、パッケージの
@ISA
変数にはそれらの親のリストが含まれます。これは単にスカラーのリストであり、各スカラーはパッケージ名に対応する文字列です。
our
パッケージ変数であることが期待されるため、@ISA
手を取り合ってください。@ISA
@ISAは'isa'の略で、配列に親のパッケージが含まれていることを意味します