3

Rubyでは、次のようなコードがあります

foo { |x, y| puts y }

コンパイラー/インタープリターが未使用の変数Xについて警告し続けるので、xを「*」に置き換えてコンパイラーが文句を言うのをやめました。(なぜ私が*が最良の選択であると決めたのか分かりません...それはちょうど起こった...)

foo { |*, y| puts y }

これは正確に何をしますか?そして、副作用はありますか?

4

1 に答える 1

4

このコンテキストでのアスタリスクは、「スプラット」演算子と呼ばれます。これは、その場所に複数のパラメーターを渡すことができ、ブロックがそれらを配列として表示することを意味します。

ただし、その後に変数名がないと、どのように、またはなぜ機能するのかわかりません(例foo { |*x, y| puts y })。これは、ブロックが出力する最後のパラメーターを除くすべてのパラメーターを無視することを意味していると思います。

于 2010-09-15T14:31:27.533 に答える