Я следующий 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
было элементом результирующего массива. Его значение теперь остается вторым элементом массива. Когда я смотрю на скомпилированный Javascript я могу легко перемещать определение process
из массива вроде этого:
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
number = _ref[_i];
process = number * 2;
_results.push([number, process]);
}
Как я могу сделать это в CoffeeScript?
Попробуйте online!
Спасибо за ответ, но это выглядит грязно. Что делать, если я даже не хочу 'number' в моем массиве? – Amberlamps
@Amberlamps проверить обновленный ответ. – stackoverflowery
Это на самом деле хороший обходной путь. Благодаря! – Amberlamps