- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl-Mouse/アトリビュート/型制約 へ行く。
- 1 (2010-12-24 (金) 04:53:59)
- 2 (2010-12-24 (金) 05:06:53)
アトリビュートの型制約
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で型違反時のメッセージを定義する。
参考
- http://search.cpan.org/perldoc?Moose::Util::TypeConstraints
- http://perl-mongers.org/2010/02/the-fastest-way-to-mastering-moose-and-mouse.html
- 組み込みの型
Any : 制約なし Maybe[TypeName] : UndefかTypeName Item : 制約なし Bool : 真偽値 Undef : 未定義(取扱注意) Defined : 真値 Value : プリミティブ値 Num : 数値('NaN', 'Inf', '0 but true'などはStr型) Int : 整数 Str : 文字列 RoleName : ロード済みのロール名(Moose 0.84+では非推奨) ClassName : ロード済みのクラス名 Ref : リファレンス ScalarRef : スカラーリファレンス ArrayRef or ArrayRef[TypeName] : 配列リファレンス HashRef or HashRef[TypeName] : ハッシュリファレンス CodeRef : コードリファレンス RegexpRef : 正規表現リファレンス GlobRef : グロブリファレンス FileHandle : ファイルハンドル Object : オブジェクト Role : ロール
- 組み込みの型