このCoffeeScriptチュートリアルを見る:http : //jashkenas.github.com/coffee-script/
Splatsの目的がよくわかりません。この構造は何ですか?それは(歴史的に)どこから来たのですか?
*args
in def foo(*args):
です。
このCoffeeScriptチュートリアルを見る:http : //jashkenas.github.com/coffee-script/
Splatsの目的がよくわかりません。この構造は何ですか?それは(歴史的に)どこから来たのですか?
*args
in def foo(*args):
です。
回答:
「splat演算子」という用語はRubyに由来し、*
文字(「splat」と呼ばれることもあります。「Jargon File」エントリを参照)は、引数リストのエントリが引数のリストを「吸収」する必要があることを示すために使用されます。
CoffeeScriptは非常に早い段階でRubyスタイルのスプラットを採用しましたが(問題16を参照)、Douglas Crockfordの提案により、構文は2週間後に変更され*x
ましx...
た(問題45を参照)。それでも、CoffeeScripterは構文を「splat」または「splatオペレーター」と呼んでいます。
彼らが実際に行うarguments
ことに関して、スプラットは、スプラットされた引数がすべての「余分な」引数の配列になるような方法でオブジェクトをスライスします。最も平凡な例は
(args...) ->
この場合、args
は単にの配列コピーになりarguments
ます。スプラット引数は、標準引数の前、後、または間に置くことができます。
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
最初の2つのケースでは、関数が0-1の引数を受け取るrest
と、空の配列になります。最後のケースでは、関数はrest
空ではないために3つ以上の引数を受け取る必要があります。
JavaScriptは同じ名前の関数に複数のシグネチャを許可しないため(CとJavaのように)、スプラットはさまざまな数の引数を処理するための非常に時間の節約になります。
params
キーワードに似ています。
console.log('this:',variable,'should be replaced with', another_variable);
私はそれがjavascriptの引数オブジェクトの構文砂糖だと思います。
このアイデアは、rubyのsplatオペレーターから*
生まれるかもしれません。
(x, rest...) ->
、rest
含まれて文句を言わないx
、arguments
ありません。
arguments
+call
:stackoverflow.com/questions/17380315/...