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;
      
      






All Articles