これは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, 6
は1+3, 1+6, 2+3, 2+6
(当然4, 7, 5, 8
と評価されます)を返します。
MOTIVATION
2つ以上のリストの取り得る組み合わせをすべて走査しなければならないことはよくあります。交差演算子はそれを1つの走査に濃縮できるので、プログラムを簡潔にし、字下げのレベルを1つ減らせます。
メタ演算子としての使用法は時としてループを完全になくすことができます。
コメント
コメントを投稿