假设我想反向迭代一个通用迭代器,而不知道迭代器的内部结构,并且基本上不通过无类型魔法作弊,并假设这可以是任何类型的迭代器,它服务于迭代器;我们可以在运行时甚至通过宏优化迭代器的逆向吗?
前锋
var a = [1, 2, 3, 4].iterator();
// Actual iteration bellow
for(i in a) {
trace(i);
}
向后
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);
}
我认为必须有一种更简单的方法,或者至少是快速的方法。我们无法知道大小,因为 Iterator 类不携带大小,因此我们无法反转对 temp 数组的推送。但是我们可以删除相反的内容,因为我们确实知道临时数组的大小。
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]);
}
是否有更多优化可用于消除阵列的可能性?