5

Perl6のメソッド宣言でプラスは何を意味しますか?

これは仕様の例です

submethod BUILD (+$tail, +@legs, *%extraargs) {
    $.tail = $tail;
    @:legs = @legs; 
}
4

2 に答える 2

9

2019 年更新セクションVariadic positionals destructuring;を参照してください。+@fooそして*@fooSOの質問「関数/サブルーチンへの可変数の引数」に対する私の答えで


2015 年に、Larry Wall はパラメーター プレフィックス を導入しました。これは+ 4 つのパラメーター プレフィックス ( ***+、 ) のうちの 1 つで、ずさんな (可変個の) パラメーター|を意味します。彼はそれを Rakudo コンパイラに追加し、いくつかのテストを追加し、irc チャンネルで簡単な非公式の説明を行い、関連する言語設計ドキュメントにセクションを追加しました。


元の質問で引用されている例は、10 年以上前に書かれて凍結された非公式文書のアーカイブから取られています。当時、+パラメータ接頭辞は、位置パラメータとは対照的に、名前付きパラメータを意味していました。現在、私たちは:そのために次のように使用しています。

submethod BUILD (:$tail, :@legs, *%extraargs) {
    $.tail = $tail;
    @.legs = @legs;
}
于 2015-09-25T19:10:54.857 に答える
9

+あなたの「仕様」リンクは歴史的な文書に行き、構文はPerl 6から長い間使われていました.正規表現の量指定子と同様に、おそらく「少なくとも1つの引数」で何をしていたのかわかりません。

最新の仕様については、署名とサブルーチンに関するすべての情報が含まれているhttp://perlcabal.org/syn/S06.htmlを参照してください。

于 2013-04-11T11:37:39.317 に答える