[解決済み] CoffeeScriptチュートリアルの "Splats "の意味とは?
質問
このCoffeeScriptチュートリアルを見ていると: http://jashkenas.github.com/coffee-script/
スプラッツが何のためにあるのかよくわからない。この構造は何なのでしょうか?どこから来たのか(歴史的に)
どのように解決するのですか?
スプラット演算子という用語はRubyから来ており、Rubyでは
*
文字("splat"と呼ばれることもある-参照)に由来します。
専門用語集のエントリ
) は、引数リストのエントリが "soak up" する必要があることを示すために使用されます。
CoffeeScriptは非常に早い段階でRubyスタイルのsplatを採用しました(
問題16
を参照)、しかし Douglas Crockford の提案により、構文が
*x
から
x...
に変更しました。
45号
). それでも CoffeeScripters はこの構文を "splat" または "splat operator." として参照しています。
実際に何をするかというと、スプラットは
arguments
オブジェクトをスライスし、スプラットされた引数がすべての "余分な" 引数の配列になるようにします。最も単純な例は
(args...) ->
この場合
args
は単に配列のコピーになります。
arguments
. スプラット引数は、標準引数の前、後、または間に来ることができます。
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
最初の2つのケースでは、関数が0-1の引数を受け取る場合。
rest
は空の配列になります。最後のケースでは、関数は2つ以上の引数を受け取る必要があります。
rest
が空でないためには2つ以上の引数を受け取る必要があります。
JavaScriptは同じ名前の関数に複数のシグネチャをつけることができないので(CやJavaのように)、スプラットは様々な数の引数を扱うための大きな時間節約になります。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?