15
our @ISA = "Critter";

どの条件で使用し@ISAますか?

そしてなぜour @ISA

4

2 に答える 2

31

マットのコメントを拡張するために、このようなものはに広範囲に文書化されていperldocsます。

に関して@ISAこれはそれが言うことです:

クラスは単なるパッケージです

..。

各パッケージには、と呼ばれる特別な配列が含まれています@ISA。配列には、その@ISAクラスの親クラス(存在する場合)のリストが含まれています。この配列は、Perlがメソッド解決を行うときに調べられます。これについては後で説明します。

手動で設定することは可能で@ISAあり、これは古いPerlコードで見られる場合があります。はるかに古いコードもbaseプラグマを使用します。新しいコードの場合、parentプラグマを使用して親を宣言することをお勧めします。このプラグマが設定を処理します@ISA。また、親クラスをロードし、パッケージがそれ自体から継承しないことを確認します。

親クラスが設定されていても、パッケージの@ISA変数にはそれらの親のリストが含まれます。これは単にスカラーのリストであり、各スカラーはパッケージ名に対応する文字列です。

ourパッケージ変数であることが期待されるため、@ISA手を取り合ってください。@ISA

于 2013-01-06T11:35:31.620 に答える
8

@ISAは'isa'の略で、配列に親のパッケージが含まれていることを意味します

于 2013-07-22T02:17:02.230 に答える