Underscore.JS ソース ( https://github.com/jashkenas/underscore/blob/master/underscore.js ) によると:
// Start chaining a wrapped Underscore object.
chain: function() {
this._chain = true;
return this;
},
// Extracts the result from a wrapped and chained object.
value: function() {
return this._wrapped;
}
chain() および value() 関数は、Underscore オブジェクトの単純なラッパーです。
したがって、次の構造を使用している場合:
_.chain(someCollection)
.map(function1)
.map(function2)
.map(function3)
.value()
Underscore は 2 つの中間コレクションを作成し、3 つの列挙を実行します。
LINQ がそのメソッドを実装するように、chain() および value() メソッドが遅延評価として実装されないのはなぜですか? たとえば、このチェーンは次のように扱うことができます。
_.chain(someCollection)
.map(function(x){
return function3(function2(function1(x)));
})
.value();
この種の実装に JS 関連の問題はありますか?