驼鹿类作为属性类型?

时间:2016-02-04 00:35:24

标签: perl moose

有没有办法将属性的值约束为从某个特定类继承的类名?

has thing_class => (
  ??? => Some::Base::Class,
);

此处thing_class的有效值应为Some::Base::Class或从中派生的类。 isa不适合使用,因为这需要该属性是Some::Base::Class的实例化实例。

1 个答案:

答案 0 :(得分:3)

类型约束由isa强加。当然,您首先需要定义合适的类型约束。

use Moose::Util::TypeConstraints;

subtype 'FooBarSubclassName',
   as 'Str',
   where { $_->isa('Foo::Bar') };

no Moose::Util::TypeConstraints;


has thing_class => (
  isa => 'FooBarSubclassName',
);