Класс Moose как тип атрибута?
Есть ли способ ограничить значение атрибута именем класса, которое наследуется от какого-то определенного класса?
has thing_class => (
??? => Some::Base::Class,
);
Здесь действительное значение для thing_class
должно быть Some::Base::Class
или класс, производный от него. isa
это не то, что нужно использовать, потому что для этого потребуется, чтобы атрибут был экземпляром Some::Base::Class
,
1 ответ
Типовые ограничения накладываются isa
, Конечно, вам нужно сначала определить подходящее ограничение типа.
use Moose::Util::TypeConstraints;
subtype 'FooBarSubclassName',
as 'Str',
where { $_->isa('Foo::Bar') };
no Moose::Util::TypeConstraints;
has thing_class => (
isa => 'FooBarSubclassName',
);