- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl-Mouse/アトリビュート/型変換 へ行く。
- 1 (2010-12-24 (金) 01:22:18)
- 2 (2010-12-24 (金) 01:32:33)
アトリビュートの型変換
User.pm
package User; use Mouse; use Mouse::Util::TypeConstraints; use URI; subtype 'My::Types::URI' => as class_type('URI'); coerce 'My::Types::URI' => from 'Str' => via { URI->new($_); }; has 'uri' => ( is => 'rw', isa => 'My::Types::URI', default => sub { URI->new }, coerce => 1 ); __PACKAGE__->meta->make_immutable(); 1;
main.pl
my $user = User->new( uri => 'http://www.yahoo.co.jp/' ); say ref $user->uri;
説明
- subtypeで新しい型名(My::Types::URI)と元になる型名(URI)を定義する。
- => class_type('URI')はシンタックスシュガーで、=> as 'Object' => where { $_->isa('URI') } とも書ける。
- coerceで型変換を定義する。
- hasの中でcoereにフラグを立てて、型変換を有効にする。
参考
http://perldoc.perlassociation.org/pod/Moose-Doc-JA/Moose/Cookbook/Basics/Recipe5.html