Perl6のメソッド宣言でプラスは何を意味しますか?
これは仕様の例です
submethod BUILD (+$tail, +@legs, *%extraargs) {
$.tail = $tail;
@:legs = @legs;
}
2019 年更新セクションVariadic positionals destructuring;を参照してください。+@foo
そして*@foo
、SOの質問「関数/サブルーチンへの可変数の引数」に対する私の答えで。
2015 年に、Larry Wall はパラメーター プレフィックス を導入しました。これは+
、 4 つのパラメーター プレフィックス ( *
、**
、+
、 ) のうちの 1 つで、ずさんな (可変個の) パラメーター|
を意味します。彼はそれを Rakudo コンパイラに追加し、いくつかのテストを追加し、irc チャンネルで簡単な非公式の説明を行い、関連する言語設計ドキュメントにセクションを追加しました。
元の質問で引用されている例は、10 年以上前に書かれて凍結された非公式文書のアーカイブから取られています。当時、+
パラメータ接頭辞は、位置パラメータとは対照的に、名前付きパラメータを意味していました。現在、私たちは:
そのために次のように使用しています。
submethod BUILD (:$tail, :@legs, *%extraargs) {
$.tail = $tail;
@.legs = @legs;
}
+
あなたの「仕様」リンクは歴史的な文書に行き、構文はPerl 6から長い間使われていました.正規表現の量指定子と同様に、おそらく「少なくとも1つの引数」で何をしていたのかわかりません。
最新の仕様については、署名とサブルーチンに関するすべての情報が含まれているhttp://perlcabal.org/syn/S06.htmlを参照してください。