我有一个自定义的 DateTime 类型,它定义了从字符串到 DateTime 的强制,如下所示:
package Library;
use Type::Library -base, -declare => qw(DateTime);
use DateTime::Format::ISO8601;
class_type DateTime, { class => 'DateTime' };
coerce DateTime, from Str, via { DateTime::Format::ISO8601->parse_datetime($_) };
我想在字典中使用该 DateTime 类型,如下所示:
package MyObj;
use Moo;
$constraint = declare MyType, as Dict[ name => Str, date => DateTime ];
has 'whatsis' => ( is => 'ro', isa => $constraint );
然后将其称为:
use MyObj;
my $obj = MyObj->new( whatsis => { name => 'Something', date => '2016-01-01' } );
我已经尝试添加coerce => 1
到 的声明中whatsis
,但这没有用。
如何创建从 Dict 继承并运行在成员类型上定义的类型强制的自定义类型?