2011年3月5日土曜日

Perl 5 to 6 - 交差メタ演算子

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

これはMoritz Lenz氏のWebサイトPerlgeek.deで公開されているブログ記事"Perl 5 to 6" Lesson 25 - The Cross Meta Operatorの日本語訳です。

原文はCreative Commons Attribution 3.0 Germanyに基づいて公開されています。

本エントリにはCreative Commons Attribution 3.0 Unportedを適用します。

Original text: Copyright© 2008-2010 Moritz Lenz

Japanese translation: Copyright© 2011 SATOH Koichi

NAME

"Perl 5 to 6" Lesson 25 - 交差メタ演算子

SYNOPSIS

for <a b> X 1..3 -> $a, $b {
    print "$a: $b   ";
}
# 出力: a: 1  a: 2  a: 3  b: 1  b: 2  b: 3

.say for <a b c> X 1, 2;
# 出力: a1\n a2\n b1\n b2\n c1\n c2\n

DESCRIPTION

交差演算子Xは2つ以上のリストのデカルト積を返します。 つまりどういうことかというと、最初のリストから1つ取って最初の要素に、2番目のリストから1つ取って2番目の要素に、といった具合で作り得るすべての組を返します。

Xの後に演算子を付けるとそれが組のすべての要素に対して適用され、その結果が代わりに返されます。 よって1, 2 X+ 3, 61+3, 1+6, 2+3, 2+6(当然4, 7, 5, 8と評価されます)を返します。

MOTIVATION

2つ以上のリストの取り得る組み合わせをすべて走査しなければならないことはよくあります。交差演算子はそれを1つの走査に濃縮できるので、プログラムを簡潔にし、字下げのレベルを1つ減らせます。

メタ演算子としての使用法は時としてループを完全になくすことができます。

SEE ALSO

http://perlcabal.org/syn/S03.html#Cross_operators

0 コメント:

コメントを投稿