ペアのリストを分解する


8

検討する

.say for (1,2,2).rotor(2=>-1).map( -> ($a, $b) { $a - $b })

期待どおりに動作します。しかしながら、

.say for (1,2,2).pairs.rotor(2=>-1).map( -> ($a, $b) { $a.value - $b.value })

投げる

Too few positionals passed to '<anon>'; expected 2 arguments but got 0 in sub-signature

これはバグですか、それとも何か不足していますか?

これは、Perl 6.dを実装するMoarVMバージョン2019.03上に構築されたRakudo Starバージョン2019.03.1です。

回答:


5

これはをPairとしてCapture受け取り、Pairを名前付き引数に変換します。

$ raku -e '(a => 42, b => 666).map: -> |c { dd c }'
\(:a(42))
\(:b(666))

あなたの例では、それから位置引数を渡さないため、観察された実行エラーが発生します。

これを指摘するためのjnthn ++。


3
aへの強制は、Captureまさに破壊がどのように機能するかです。
ジョナサンワージントン

0

ところで-私はなぜドキュメントから| cではなく\ c ...ではないのか疑問に思っていました...

シグネチャ内で、キャプチャは、垂直バー|の付いたシギレスパラメータにプレフィックスを付けることで作成できます。これにより、引数リストの残りがそのパラメーターにパックされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.