为什么常量不会自动继承?

时间:2011-08-23 09:56:22

标签: perl

我们知道Perl中的constant只是sub

但为什么他们没有继承?

2 个答案:

答案 0 :(得分:10)

事实上,它们是:

use strict; use warnings;

package Father;
use constant CONST => 1;

package Child;
use base 'Father';
sub new { bless {}, shift }

package main;
my $c = Child->new;
print $c->CONST;        # 1
print CONST();          # undefined subroutine

答案 1 :(得分:2)

方法是继承的,函数不是。如果你想继承常量,你需要像方法一样调用它。

$self->FOO

__PACAKAGE__->FOO

那就是说,你应该导入常量,而不是继承它们。