Perl 父级和@ISA之间有什么区别?
parent和@ISA都在做相同的工作,parent和@ISA的相应用途是什么Perl 父级和@ISA之间有什么区别?,perl,inheritance,Perl,Inheritance,parent和@ISA都在做相同的工作,parent和@ISA的相应用途是什么 package Baz; use parent qw(Foo Bar); 或 package Baz; BEGIN { require Foo; require Bar; push @ISA, qw(Foo Bar); } use parent是一种简单的方法,可以在一条语句中执行require并将包名推送到@ISA上。它发生在编译
package Baz;
use parent qw(Foo Bar);
或
package Baz;
BEGIN
{
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
}
use parent
是一种简单的方法,可以在一条语句中执行require
并将包名推送到@ISA
上。它发生在编译时,而不是在运行时执行简单的@ISA=qw/Foo Bar/,这意味着您只需对包名编码一次,这可能会减少错误。如果一个包试图从同名包继承,它也会发出警告,这将是无用的,并可能导致无限继承循环
简而言之,
use parent
是一种更简洁、更简单的方法,可以让一切正常。是一种语法糖,用于设置包的@ISA
变量,并在编译时自动加载其超类。如前所述,OP中的两个代码块之间没有功能上的差异。您是否在问@ISA
的作用?方法调用会查询它以查找继承的方法。