父和@ISA有什么区别?

use*_*308 2 perl

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

package Baz;
    use parent qw(Foo Bar);
Run Code Online (Sandbox Code Playgroud)

要么

package Baz;
    BEGIN 
    {
        require Foo;
        require Bar;
        push @ISA, qw(Foo Bar);
    }
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 8

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

简而言之,use parent是一种更简洁,更简单的方法来确保一切正常.


mob*_*mob 5

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