父和@ISA有什么区别?

时间:2013-04-22 20:03:23

标签: perl

父母和@ISA做同样的工作,父母和@ISA的使用是相应的。

package Baz;
    use parent qw(Foo Bar);

package Baz;
    BEGIN 
    {
        require Foo;
        require Bar;
        push @ISA, qw(Foo Bar);
    }

2 个答案:

答案 0 :(得分:8)

use parent只是一种简洁的方式来执行require并在一个语句中将包名称推送到@ISA。它发生在编译时,而不是在运行时完成的简单our @ISA = qw/ Foo Bar /,这意味着您必须只编写一次包名称,这可能会减少错误。如果包试图从同名的包继承,它也会引发警告,这将是无用的并且可能导致无限的继承循环。

简而言之,use parent是一种更简洁,更简单的方法,可以使一切正确。

答案 1 :(得分:4)

parent是用于设置包的@ISA变量并在编译时自动加载其超类的语法糖。作为parent documentation状态,OP中的两个代码块之间没有功能差异。