Noob question. Sto provando a scrivere un ciclo for con un intervallo. Ad esempio, questo è quello che voglio produrre in JavaScript:per loop con intervallo in CoffeeScript
var i, a, j, b, len = arr.length;
for (i = 0; i < len - 1; i++) {
a = arr[i];
for (j = i + 1; i < len; j++) {
b = arr[j];
doSomething(a, b);
}
}
Il più vicino che ho fatto tanta strada è la seguente, ma
- Esso genera inutili e costosi fetta chiama
- accessi la lunghezza della matrice all'interno del ciclo interno
CoffeeScript:
for a, i in a[0...a.length-1]
for b, j in a[i+1...a.length]
doSomething a, b
codice generato:
var a, b, i, j, _i, _j, _len, _len1, _ref, _ref1;
_ref = a.slice(0, a.length - 1);
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
a = _ref[i];
_ref1 = a.slice(i + 1, a.length);
for (j = _j = 0, _len1 = _ref1.length; _j < _len1; j = ++_j) {
b = _ref1[j];
doSomething(a, b);
}
}
(Come) può questo essere espressa in CoffeeScript?
Grazie, funziona. Non capisco perché genera ancora alcuni contatori di loop inutili, ma posso conviverci. – alekop
@alekop Penso che il principale razionale per quei contatori extra sia che se si modifica la variabile di ciclo ('i' o' j') all'interno del ciclo, non si cambiano le iterazioni del ciclo. – epidemian