our @ISA = "Critter";
在什么情况下我会使用
@ISA
?为什么是
our @ISA
? 最佳答案
为了扩展Mat的评论,在perldocs
中广泛记录了此类内容。
关于@ISA
,here's what it says:
一个类就是一个包
...
每个软件包都包含一个称为@ISA
的特殊数组。 @ISA
数组
包含该类的父类(如果有)的列表。这个数组是
检查了Perl何时进行方法解析,这将在后面介绍。
可以手动设置@ISA
,您可能会在较旧的版本中看到它
Perl代码。许多较旧的代码也使用base
编译指示。对于新代码,
我们建议您使用parent
编译指示来声明您的父母。
该编译指示将负责设置@ISA
。它还会加载
父类,并确保该包不继承自
本身。
但是,如果设置了父类,则包的@ISA
变量将
包含这些父母的清单。这只是一个标量列表,
每个都是与程序包名称相对应的字符串。our
和@ISA
齐头并进,因为预计@ISA
是程序包变量。
关于perl - Perl中的@ISA数组是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14181570/