YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* 型変換 (coerce)[#lbe6ff7c]
*** User.pm [#g9794b3a]
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', defa...
__PACKAGE__->meta->make_immutable();
1;
*** main.pl [#m7c8e849]
my $user = User->new( uri => 'http://www.yahoo.co.jp/' );
say ref $user->uri;
** 説明 [#d1ae9468]
- subtypeで新しい型名(My::Types::URI)と元になる型名(UR...
-- => class_type('URI') はシンタックスシュガーで、=> as '...
- coerceで型変換を定義する。
- hasの中でcoereにフラグを立てて、型変換を有効にする。
- subtypeはhasより前に記述する。
** 参考 [#v2296fa8]
http://perldoc.perlassociation.org/pod/Moose-Doc-JA/Moose...
終了行:
* 型変換 (coerce)[#lbe6ff7c]
*** User.pm [#g9794b3a]
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', defa...
__PACKAGE__->meta->make_immutable();
1;
*** main.pl [#m7c8e849]
my $user = User->new( uri => 'http://www.yahoo.co.jp/' );
say ref $user->uri;
** 説明 [#d1ae9468]
- subtypeで新しい型名(My::Types::URI)と元になる型名(UR...
-- => class_type('URI') はシンタックスシュガーで、=> as '...
- coerceで型変換を定義する。
- hasの中でcoereにフラグを立てて、型変換を有効にする。
- subtypeはhasより前に記述する。
** 参考 [#v2296fa8]
http://perldoc.perlassociation.org/pod/Moose-Doc-JA/Moose...
ページ名: