2012年2月16日木曜日

プロトタイプ


このエントリーをはてなブックマークに追加


最初に&があると、特別扱いされて、無名サブルーチンの sub を省略して「間接オブジェクト」スロットにブロックだけを置くことができる(この場合、ブロックの後ろにはコンマは置かない)。
func(@ary, sub { $_*2 } ) が func { $_*2 } @ary になる。



sub hoge ($&) {}
hoge 'foo', sub {}; #ok

sub hoge2 (&$) {}
hoge2 {} 'foo'; #ok


sub aaa (&) {}
aaa sub{} #ok
sub mymap (&@) {}
mymap {} qw( a b c d ); #ok
mymap sub{}, qw( a b c d ); #ok
mymap sub{} qw( a b c d ); #NG subが付くと、コンマが必要



Plack::Builderの例



package Plack::Builder;
sub builder (&) {

}


app.psgiの中で、



builder {
...
$app;
}


で実行できる。





0 件のコメント:

コメントを投稿