有没有办法将属性的值约束为从某个特定类继承的类名?
has thing_class => (
??? => Some::Base::Class,
);
此处thing_class
的有效值应为Some::Base::Class
或从中派生的类。 isa
不适合使用,因为这需要该属性是Some::Base::Class
的实例化实例。
答案 0 :(得分:3)
类型约束由isa
强加。当然,您首先需要定义合适的类型约束。
use Moose::Util::TypeConstraints;
subtype 'FooBarSubclassName',
as 'Str',
where { $_->isa('Foo::Bar') };
no Moose::Util::TypeConstraints;
has thing_class => (
isa => 'FooBarSubclassName',
);