Hatena::Groupdann

dann's blog このページをアンテナに追加 RSSフィード

Fork me on GitHub

2008-07-03

MooseX::Methodで引数チェック

| MooseX::Methodで引数チェック  - dann's blog を含むブックマーク はてなブックマーク - MooseX::Methodで引数チェック  - dann's blog MooseX::Methodで引数チェック  - dann's blog のブックマークコメント

perlcodesampleさんのをMooseX::Methodで書いてみました。

http://d.hatena.ne.jp/perlcodesample/20080702#seeall

MooseX::Methodだと、宣言的に書けて美しいですね。コード量もかなり短くなっています。

#!/usr/bin/env perl
use strict;
use warnings;

{

    package Foo;
    use MooseX::Method;

    method conf => named(
        mode => { isa => 'Int', required => 1 },
        warn => { isa => 'Int', required => 1 },
    ) => sub {
        my ( $self, $args ) = @_;

        print "called !!! \n";
    };
}

Foo->conf( mode => 1, warn => 0 );

# 引数名が間違ってる(引数が不足と同じだけれど)
eval { Foo->conf( moda => 1, warn => 0 ); };
if ($@) {
    warn $@;
}

# 引数の型が違う
eval { Foo->conf( mode => 'Hello', warn => 0 ); };
if ($@) {
    warn $@;
}

# 引数が不足
eval { Foo->conf( mode => 1 ); };
if ($@) {
    warn $@;
}

実行結果

called !!! 
Parameter (mode): Must be specified at moosex_method.pl line 23
Parameter (mode): Argument isn't (Int) at moosex_method.pl line 29
Parameter (warn): Must be specified at moosex_method.pl line 35

Mooooooooooooooooooose

とおりすがりとおりすがり2008/07/04 09:48モダンなとか言ってる時点で終わってる言語。

yappoyappo2008/07/04 12:16じゃぁモランボンで

danndann2008/07/05 00:51どんな言語でもモダンな書き方やライブラリというのはあると思いますよ。

na3na32008/07/05 09:22仕事だとモダンな書き方を許してもらえなかったりして悔しいです。

ponpon2008/07/05 13:16良く分からないけど、「モダン」ってPerl5.8.8で許されるようになった書き方とかっすか?

JohannJohann2008/07/05 16:36すごく為になる情報です。とおりすがりの茶々とか気にする必要無いですね。
ありがとうございました。

サルサル2008/07/05 23:00perlの問題点をまざまざと見せ付けてくれたという点ではすごくためになる情報だと思う。

perl48perl482010/08/27 19:42なるほど、Plaggerを学ぶと早いしモダンなんですね。ありがとうございます。