Perl 6のフィードオペレーター

Perl 5プログラマーは、この構造をコードで見つけました。

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; 

Source: https://habr.com/ru/post/J253701/


All Articles