Diciamo che mi piacerebbe ripetere un iteratore generico al contrario, senza conoscere l'interno dell'iteratore e in sostanza non barare tramite la magia non tipizzata e supponendo che questo potrebbe essere qualsiasi tipo di iterabile, che serve un iteratore; possiamo ottimizzare il contrario di un iteratore in fase di esecuzione o anche tramite macro?Qual è il modo più veloce per scorrere attraverso un Iterator al contrario
Attaccanti
var a = [1, 2, 3, 4].iterator();
// Actual iteration bellow
for(i in a) {
trace(i);
}
indietro
var a = [1, 2, 3, 4].iterator();
// Actual reverse iteration bellow
var s = [];
for(i in a) {
s.push(i);
}
s.reverse();
for(i in s) {
trace(i);
}
presumo che ci deve essere un modo più semplice, o almeno modo veloce di fare questo. Non possiamo conoscere una dimensione perché la classe Iterator non ne contiene una, quindi non possiamo invertire la spinta sulla matrice temporanea. Ma possiamo rimuovere il retro perché conosciamo la dimensione della matrice temporanea.
var a = [1,2,3,4].iterator();
// Actual reverse iteration bellow
var s = [];
for(i in a) {
s.push(i);
}
var total = s.length;
var totalMinusOne = total - 1;
for(i in 0...total) {
trace(s[totalMinusOne - i]);
}
Is there any more optimisations that could be used to remove the possibility of the array?
Sarebbe bello se possibile mantenere un'implementazione pigra di questo, poiché gli iteratori sono pigri in sé stessi (per mezzo di questo è il tuo caso chiamare il metodo successivo) – simonrichardson