Почему константа не наследуется автоматически? - PullRequest
2 голосов
/ 23 августа 2011

Как мы знаем, constant в Perl это просто sub,

, но почему они не наследуются?

Ответы [ 2 ]

10 голосов
/ 23 августа 2011

На самом деле это:

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
2 голосов
/ 23 августа 2011

Методы наследуются, функции - нет. Если вы хотите наследовать константу, вам нужно вызвать ее как метод.

$self->FOO

или

__PACAKAGE__->FOO

Тем не менее, вы должны импортировать константы, а не наследовать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...