【问题标题】:what is the difference between parent and @ISA?父母和@ISA有什么区别?
【发布时间】:2020-01-31 03:40:29
【问题描述】:

父母和@ISA 都在做同样的工作,相应地,父母和@ISA 的用途是什么。

package Baz;
    use parent qw(Foo Bar);

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

【问题讨论】:

  • 你在问@ISA 做什么?方法调用会查询它以查找继承的方法。

标签: perl inheritance


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 2010-11-25
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      相关资源
      最近更新 更多