our @ISA = "Critter";
何时会使用@ISA
?
以及为什么要使用our @ISA
?
perldocs
中有广泛的记录。@ISA
,这里是它的说明:
一个类只是一个包
...
每个包都包含一个特殊的数组,称为
@ISA
。@ISA
数组包含该类的父类列表(如果有)。当Perl执行方法解析时,将检查此数组,我们稍后会讨论。可以手动设置
@ISA
,您可能会在较旧的Perl代码中看到此设置。更早的代码还使用base
pragma。对于新代码,我们建议您使用parent
pragma 声明父类。此pragma将负责设置@ISA
。它还将加载父类并确保包不会从自身继承。无论如何设置父类,包的
@ISA
变量将包含这些父类的列表。这只是一个标量列表,每个标量都是与包名称对应的字符串。
our
和@ISA
密切相关,因为 @ISA
预期为包变量。
"Critter"
分配给@ISA
,因为前者是标量而后者是数组。 - user554546@ISA
。相反,使用use base 'Critter';
或者更新的use parent 'Critter';
。它们同样需要基础模块。请参考 base、parent 和 perlobj。 - Palec