は、匿名のslurpyパラメータの例があります:Perl 6シグネチャの匿名パラメータは値を破棄しますか? Perl 6の<a href="https://docs.perl6.org/type/Signature" rel="nofollow noreferrer">Signature docs</a>で
sub one-arg (@) { }
sub slurpy (*@) { }
one-arg (5, 6, 7); # ok, same as one-arg((5, 6, 7))
slurpy (5, 6, 7); # ok
slurpy 5, 6, 7 ; # ok
この周りのテキストは、パラメータの署名を満たすリストではなく、何についてである主な理由は何の文は、サブルーチンではありませんサブルーチンはそれを行います。
私はそれを試していましたが、1つ以上の項目のリストを取るサブルーチンを作ろうとしていました。私はそれらの名前を特に気にしませんでした。署名があっても、私はまだ@_
の引数リストにアクセスできると考えました。
$ perl6
To exit type 'exit' or '^D'
> sub slurpy(*@) { say @_ }
===SORRY!=== Error while compiling:
Placeholder variable '@_' cannot override existing signature
------> sub⏏ slurpy(*@) { say @_ }
引数リストを取得する別の方法があり、または匿名のパラメータは、それらを捨てるん:あなたは、署名がない場合しかし、あなたは@_
を取得しますか?型制約に関するセクションで使用されていますが、パラメータ値のいずれかを使用する例はありません。引き続き引数リストを取得できますか?
あなたの少なくとも1つの例では、同じ問題に戻りませんか?これらのサブシステムの中には、依然としてパラメータへのアクセス権がありません。 'nextsame'は面白いですが、私はそのレベルの魔法を探していませんでした。 –
@briandfoy:そうです。しかし、答えの一番下に示されているように、最初の '@'に '@ _ 'という名前を付けると、あなたがしようとしたことを効果的に得ることができます:' @ _'のすべての引数にアクセスできます。サブノリティの '$、* @'パラメータに '' 1つ以上の項目 ''の条件を適用するために使われた名前を指定します。 – smls
あなたは何の問題について話していますか?変数にアクセスしたい場合は、その変数に名前をつけてください:-)。また、引数リスト全体にアクセスすることもできますが、名前を付ける必要もあります。 Perl 5でも、アクセスするための名前( '@ _ ')が必要です。 – moritz