型制約 (subtype)
Num.pm
package Num;
use Mouse;
use Mouse::Util::TypeConstraints;
has 'num1' => (
is => 'ro',
isa => 'Int',
);
subtype 'PositiveInt'
=> as 'Int'
=> where { $_ > 0 }
=> message { "The number you provided, $_, was not a positive number" };
has 'num2' => (
is => 'ro',
isa => 'PositiveInt',
);
__PACKAGE__->meta->make_immutable();
main.pl
my $num = Num->new(num1 => -10, num => -20);
説明
- hasでアトリビュートを記述する際にisaで型制約を指定する事が出来る。
- 型は組み込みで色々と用意されているが、subtypeで独自の型を定義する事も出来る。
- asで基底の型を、whereで制約を、messadeで型違反時のメッセージを定義する。
参考