Я новичок в Perl и был направлен в Moose, поскольку я пришел к источнику Perl OO, но у меня возникли проблемы с его работой. В частности, методы суперкласса, похоже, не наследуются. Чтобы проверить это, я создал три файла, которые содержат следующее:Perl, Moose - подкласс не наследует методы суперкласса
thingtest.pl
use strict;
use warnings;
require "thing_inherited.pm";
thing_inherited->hello();
thing.pm
package thing;
use strict;
use warnings;
use Moose;
sub hello
{
print "poo";
}
sub bye
{
print "naaaa";
}
1;
И, наконец, thing_inherited.pm
package thing_inherited;
use strict;
use warnings;
use Moose;
extends "thing";
sub hello
{
bye();
}
1;
То, что обычно ожидалось бы, это метод, которым наследуется как часть подкласс, но я получил эту ошибку вместо этого ...
Undefined subroutine &thing_inherited::bye called at thing_inherited.pm line 11.
Может ли кто-нибудь объяснить, если я что-то делаю не так? Благодаря!
Редактировать: При этом я столкнулся с другой загадкой: вызов метода в моем базовом классе из моего суперкласса, который должен был быть перезаписан суперклассом, не перезаписывается. Скажем, у меня был
sub whatever
{
print "ignored";
}
в моем базовом классе и добавил
whatever();
в моем методе до свидания, до свидания вызова не будет производить перезаписаны результат, только печать «игнорировал».
(Во время посещения одного из мест сестры SO, я получил уведомление, я получил «лося знак». Без контекста я подумал: «Что, за канадский ???») – ikegami