Perl中的@ISA数组是什么?

use*_*308 14 perl

our @ISA = "Critter";
Run Code Online (Sandbox Code Playgroud)

我会在哪种情况下使用@ISA

为什么our @ISA

Zai*_*aid 29

为了扩展Mat的评论,像这样的东西被广泛记录在perldocs.

关于@ISA,这是它的说法:

一类只是一个包

...

每个包都包含一个名为的特殊数组@ISA.该@ISA数组包含该类的父类列表(如果有).当Perl执行方法解析时,将检查此数组,稍后我们将介绍.

可以手动设置@ISA,您可以在旧的Perl代码中看到这一点.许多旧代码也使用了basepragma.对于新代码,我们建议您使用parentpragma声明您的父母.这个pragma将负责设置@ISA.它还将加载父类,并确保包不从自身继承.

但是,设置了父类,包的@ISA变量将包含这些父类的列表.这只是一个标量列表,每个标量都是一个与包名相对应的字符串.

our并且@ISA携手并进,因为@ISA预计会成为一个包变量.


小智 7

@ISA代表'是',这意味着数组包含父代的包