編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

型制約 (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で型違反時のメッセージを定義する。

参考

  • 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 : ロール

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-06-11 (土) 15:12:24 (2507d)