私は次のCoffeescriptコードを持っています:
result = ([number, process = number * 2, process] for number in [1, 2, 3])
これは次のようにコンパイルされます。
var number, process, result;
result = (function() {
var _i, _len, _ref, _results;
_ref = [1, 2, 3];
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
number = _ref[_i];
_results.push([number, process = number * 2, process]);
}
return _results;
})();
結果は多次元配列です。
[ [1, 2, 2], [2, 4, 4], [3, 6, 6] ]
これprocess
は非常にコストがかかる計算であり、その値をいくつかの異なる関数の引数として使用したいとします。
result = ([number, process = /* costly calculation */, function1(process), function2(process), function3(process)] for number in [1, 2, 3])
これは実際には問題なく機能します。process
ただし、それ自体の値が結果の配列の要素になることは望ましくありません。その値は、配列の2番目の要素のままです。コンパイルされたJavascriptを見ると、process
次のように配列の定義を簡単に移動できます。
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
number = _ref[_i];
process = number * 2;
_results.push([number, process]);
}
Coffeescriptでそれを行うにはどうすればよいですか?
オンラインでお試しください!