our @ISA = "Critter";
我会在什么情况下使用@ISA
?
为什么our @ISA
?
为了扩展 Mat 的评论,类似这样的内容在perldocs
.
关于@ISA
,这就是它所说的:
一个类只是一个包
...
每个包都包含一个特殊的数组,称为
@ISA
. 该@ISA
数组包含该类的父类的列表(如果有)。当 Perl 进行方法解析时会检查这个数组,我们稍后会介绍。可以手动设置
@ISA
,您可能会在较旧的 Perl 代码中看到这一点。很多旧代码也使用base
编译指示。对于新代码,我们建议您使用parent
pragma 来声明您的父母。这个 pragma 将负责设置@ISA
。它还将加载父类并确保包不会从自身继承。无论父类如何设置,包的
@ISA
变量将包含这些父类的列表。这只是一个标量列表,每个标量都是对应于包名称的字符串。
our
并@ISA
齐头并进,因为@ISA
预计将是一个包变量。
@ISA 代表'is a',表示数组包含父母的包