Swift Academy · पाठ

कस्टम iterator और प्रदर्शन सुझाव

कस्टम iterator/sequence लागू करें और उन्हें कुशल रखें: single-pass व्यवहार अपनाएँ, अतिरिक्त allocations से बचें और lazy views का उपयोग करें।

पाठ 3, कुल 3 में से8 चरण

कस्टम iterator और प्रदर्शन सुझाव, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

कस्टम इटरेटर 101

अपना IteratorProtocol और अनुक्रम बनाएँ। इटरेटर सामान्यतः एक ही बार चलने वाले होते हैं और अंत में nil लौटाने चाहिए।

IteratorProtocol का उदाहरण

प्रति कॉल एक तत्व देने और स्थिति आगे बढ़ाने के लिए next() लागू करें; समाप्ति पर nil लौटाएँ।

struct CountdownIterator: IteratorProtocol {
    var current: Int
    mutating func next() -> Int? {
        guard current >= 0 else { return nil }
        defer { current -= 1 }   // advance state
        return current
    }
}

var it = CountdownIterator(current: 3)
while let n = it.next() { print(n, terminator: " ") }  // 3 2 1 0
print("")

अनुक्रम आवरण

एक अनुक्रम makeIterator() उपलब्ध कराता है। अब आप for-in, map, filter आदि का उपयोग कर सकते हैं।

struct Countdown: Sequence {
    let start: Int
    func makeIterator() -> CountdownIterator {
        CountdownIterator(current: start)
    }
}

for n in Countdown(start: 5) {
    print(n, terminator: " ")   // 5 4 3 2 1 0
}
print("")

AnyIterator का शॉर्टकट

AnyIterator/AnySequence आपको क्लोज़र की सहायता से जल्दी इटरेटर बनाने देते हैं—हल्के जनरेटरों के लिए उपयोगी।

// Build an iterator from a closure
var i = 1
let anyIt = AnyIterator<Int> {
    guard i <= 3 else { return nil }
    defer { i += 1 }
    return i * 10
}
let numbers = AnySequence(anyIt)
for x in numbers { print(x, terminator: " ") } // 10 20 30
print("")

कार्य बचाने के लिए विलंबित प्रक्रिया

जब किसी प्रक्रिया का केवल कुछ भाग आवश्यक हो, तब .विलंबित को प्राथमिकता दें; इससे आवंटन और कार्य दोनों बचते हैं।

let big = Array(1...10_000)
// Eager: builds two intermediate arrays
let eager = big.map { $0 * 2 }.filter { $0 % 3 == 0 }
// Lazy: no temporaries; work is done during collection
let lazyView = big.lazy.map { $0 * 2 }.filter { $0 % 3 == 0 }
let result = Array(lazyView.prefix(5)) // only first 5 actually computed
print(result)

प्रदर्शन संबंधी युक्तियाँ

युक्तियाँ:

  • इटरेटर सरल रखें—स्थिति आगे बढ़ाएँ और अंत में nil लौटाएँ।
  • मध्यवर्ती सरणियों से बचने के लिए .विलंबित का उपयोग करें।
  • जब आकार ज्ञात हो, तो परिणामों के लिए क्षमता पहले से सुरक्षित रखें (res.reserveCapacity(n))।
  • जब कई बार चलना या अनुक्रमणिकाएँ आवश्यक हों, तब संग्रह के एल्गोरिदम को प्राथमिकता दें।

इटरेटर का नियम

त्वरित जाँच: पुनरावृत्ति के अंत में next() को क्या करना चाहिए?

पुनरावृत्ति

पुनरावृत्ति: एक न्यूनतम IteratorProtocol लिखें, उसे अनुक्रम में लपेटें और जहाँ संभव हो, .विलंबित तथा पहले से क्षमता आरक्षित करके प्रक्रियाओं को कुशल बनाएँ।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “कस्टम iterator और प्रदर्शन सुझाव” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कस्टम iterator और प्रदर्शन सुझाव” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“कस्टम iterator और प्रदर्शन सुझाव” में मैं क्या सीखूँगा?

कस्टम iterator/sequence लागू करें और उन्हें कुशल रखें: single-pass व्यवहार अपनाएँ, अतिरिक्त allocations से बचें और lazy views का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।

“कस्टम iterator और प्रदर्शन सुझाव” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Sequence/Collection पदानुक्रम
  2. Map/Filter/Reduce और lazy sequences
  3. कस्टम iterator और प्रदर्शन सुझाव
← Swift Academy पर वापस जाएँ