my @new = sort { ... } map { ... } grep { ... } @original;
ここで、データは右から左へ、
@original
配列からgrepに供給され、次にgrepがデータをマップに供給し、ソートし、最後にすべてが
@new
配列に割り当てられます。 それらはそれぞれ引数としてリストを取ります。
Perl 6では、データストリームはfeedステートメントを介して直接渡されます。 提示された例は、Perl 6でこの形式で記述できます。
my @new <== sort { ... } <== map { ... } <== grep { ... } <== @original;
TMTOWTDIの原則はどこにも行きませんでした。 これは、Perl 5の場合とほぼ同じ方法で記述できます。
my @new = sort { ... }, map { ... }, grep { ... }, @original;
唯一の違いはコンマです。
この演算子は何を提供しますか? コードを読み取り、左から右に実行します。 Perl 5コードでは、この例を左から右に読むと、右から左に機能することがわかります。 Perl 6では、データフローの方向を明確に示す構文マーカーが導入されました。
コードの読みやすさを改善し、データストリームを左から右へ右方向に向けるために、特別なフィード演算子があります。
@original ==> grep { ... } ==> map { ... } ==> sort { ... } ==> my @new;
これは、以前のバージョンとまったく同じように機能し、データは左から右に移動します。 コードでのこの演算子の実際の使用例は次のとおりです。
my @random-nums = (1..100).pick(*); my @odds-squared <== sort() <== map { $_ ** 2 } <== grep { $_ % 2 } <== @random-nums; say ~@odds-squared; my @rakudo-people = <scott patrick carl moritz jonathan jerry stephen>; @rakudo-people ==> grep { /at/ } ==> map { .ucfirst } ==> my @who-it's-at; say ~@who-it's-at;