次のように、文字列から 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 型を Dict で使用したいと思います。
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 から継承し、メンバー型で定義された型強制を実行するカスタム型を作成するにはどうすればよいですか?