Класс 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',
);
Другие вопросы по тегам