意味

2011-12-18 17 views
1

*は、関数のシグネチャ例えば意味

_.extend(destination, *sources) 

See hereに何を意味します。

+0

私の推測(これはコメントです)は "0個以上のカンマ区切りソース"です –

+0

これは価値がありますが、これはドキュメントで厳密に使用している表記です。実際の関数は[_extend = function(obj){...} '(http://documentcloud.github.com/underscore/underscore.js)として宣言されています。つまり、最初のパラメータのみが実際の関数宣言。 JavaScriptの['arguments'](https://developer.mozilla.org/ja/JavaScript/Reference/Functions_and_function_scope/arguments)疑似配列を介して' '* sources'"パラメータにアクセスします。 –

答えて

2

これは、(「フォーム場合は 『*identifierが』存在する」で検索)Pythonから借り表記法である:それは、他の全てのパラメータが後に残されてアスタリスクでタグ付けされた仮パラメータは、できるだけ多くの実引数を消費することを意味します満足。 Pythonでは、 "残っているものが多く残っています"はエラーなしで0になることがあります。 underscore.js(これは、より原始的なJavascriptの可変機能メカニズムの上にこれらのセマンティクスを実装しているので、好きなことを行うことができます)の場合はわかりません。

1

この特定のケースでは、_.extendがゼロ個以上のオブジェクトを取ることを意味します。source AFAIK、この表記法はUnderscore(Rubyからおそらくそれを選んだ)に固有です。 Cスタイルの_.extend(destination, source, ...)省略記号は、同じことに気付く別の(おそらくより一般的な)方法です。