【问题标题】:Moose class as an attribute type?Moose 类作为属性类型?
【发布时间】:2016-05-13 10:35:59
【问题描述】:

有没有办法将属性的值限制为继承自某个特定类的类名?

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

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

【问题讨论】:

    标签: perl moose


    【解决方案1】:

    类型限制由isa 施加。当然,你需要先定义一个合适的类型约束。

    use Moose::Util::TypeConstraints;
    
    subtype 'FooBarSubclassName',
       as 'Str',
       where { $_->isa('Foo::Bar') };
    
    no Moose::Util::TypeConstraints;
    
    
    has thing_class => (
      isa => 'FooBarSubclassName',
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-22
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2021-02-04
      • 2014-12-07
      • 2020-05-07
      相关资源
      最近更新 更多