問題タブ [double-splat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - メソッド呼び出しで Ruby のダブル スプラット (`**`) を使用するポイントは何ですか?
単一のスプラットで、配列を複数の引数に展開できます。これは、配列を直接渡すのとはかなり異なります。
ただし、キーワード引数を使用すると、ハッシュの構文糖衣にすぎないため、違いはわかりません。
見事な対称性とは別に、メソッド呼び出しでダブル スプラットを使用する実用的な理由はありますか? (これは、メソッド定義でそれらを使用することとは異なることに注意してください)
ruby - ダブル スプラット演算子がハッシュを破壊的に変更する – これは Ruby のバグですか?
**
Ruby 2.1.1 の (ダブル スプラット) 演算子の非常に驚くべき動作に気付きました。
の前にキーと値のペアが使用されている**hash
場合、ハッシュは変更されません。ただし、キーと値のペアが の後にのみ使用される**hash
場合、ハッシュは永続的に変更されます。
比較のために、*
配列に対する単一演算子の動作を考えてみましょう。
配列は全体を通して変更されません。
の破壊的な動作**
は意図的なものだと思いますか、それともバグのように見えますか?
どちらの場合でも、**
オペレーターがどのように機能するかを説明しているドキュメントはどこにありますか?
Ruby Forumでもこの質問をしました。
アップデート
このバグは Ruby 2.1.3+ で修正されています。
ruby - `nil` のダブル スプラット
私の理解では、非配列オブジェクトの単一のスプラットがto_a
要素を呼び出して分離します。はnil.to_a
と定義されているため[]
、次の変換が行われます。
類推すると、非ハッシュ オブジェクトのダブル スプラットが呼び出さto_h
れ、キーと値のペアが分離されると考えました。はnil.to_h
であると定義されているため{}
、次の変換が行われると予想していました。
しかし実際には、エラーが発生します: no implicit conversion of nil into Hash
. なぜそのように振る舞うのですか?
編集私はデザインの背後にある理由について尋ねていません. ダブルスプラに関して私の考えが間違っているところを尋ねています。
arguments - 2 レベル スプラッター TCL
TCL にプロシージャまたはコマンドがあり、引数の数が可変である場合、リストの要素が入力として使用される場合、次のように「スプラッタ」演算子を使用できます。
しかし、「2回スプラッタ」したい場合はどうすればよいですか?つまり、2 レベルを平坦化しますか? 順番に 2 回使用しても機能しません。
余分な文字でエラーになります。