1. ホーム
  2. javascript

[解決済み] CoffeeScriptチュートリアルの "Splats "の意味とは?

2022-09-07 15:45:20

質問

この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のように)、スプラットは様々な数の引数を扱うための大きな時間節約になります。