में एक इटरेटर के माध्यम से पुनरावृत्ति करने का सबसे तेज़ तरीका क्या है, मान लीजिए कि मैं एक सामान्य संकेतक के माध्यम से पुनरावृत्ति के माध्यम से पुनरावृत्ति करना चाहता हूं, बिना इटेटर के आंतरिक के बारे में जानना और अनिवार्य रूप से बिना किसी जादू के जादू के माध्यम से धोखा देना और यह मानना किसी भी प्रकार का पुनरावर्तनीय, जो एक पुनरावर्तक की सेवा करता है; क्या हम रनटाइम पर या मैक्रोज़ के माध्यम से एक इटरेटर के रिवर्स को अनुकूलित कर सकते हैं?रिवर्स
आगे
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);
}
मैं ग्रहण करेंगे वहाँ एक आसान तरीका हो गया है कि, या ऐसा करने का कम से कम तेजी से। हम आकार को नहीं जान सकते क्योंकि इटरेटर कक्षा में कोई नहीं है, इसलिए हम तीर सरणी पर पुश को घुमा नहीं सकते हैं। लेकिन हम रिवर्स को हटा सकते हैं क्योंकि हम 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]);
}
Is there any more optimisations that could be used to remove the possibility of the array?
इस के आलसी कार्यान्वयन को रखने के लिए यह अच्छा होगा, क्योंकि इटेटर अपने आप में आलसी हैं (अगली विधि को कॉल करने के लिए यह आपके ऊपर है) – simonrichardson