Escaping बनाम non-escaping, autoclosures
डिफ़ॉल्ट non-escaping क्लोज़र और @escaping (रिटर्न के बाद संग्रहीत या उपयोग किए जाने वाले) क्लोज़र का अंतर समझें और lazy evaluation वाले सुगम call site के लिए @autoclosure का उपयोग करें।
Escaping बनाम non-escaping, autoclosures, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
अवलोकन
लक्ष्य: जानें कि क्लोज़र कब नॉन-एस्केपिंग (डिफ़ॉल्ट) बनाम @escaping (संग्रहीत या अतुल्यकालिक) होता है और @autoclosure कॉल साइट को कैसे अधिक साफ़ बनाता है।
डिफ़ॉल्ट रूप से नॉन-एस्केपिंग
क्लोज़र पैरामीटर डिफ़ॉल्ट रूप से नॉन-एस्केपिंग होते हैं—फ़ंक्शन के लौटने से पहले कॉल किए जाते हैं और कभी संग्रहीत नहीं होते।
// Non-escaping by default: used immediately inside the function.
func applyTwice(_ f: (Int) -> Int, to x: Int) -> Int {
return f(f(x)) // called synchronously; not stored
}
let doubled = applyTwice({ $0 * 2 }, to: 3)
print(doubled) // 12एस्केपिंग क्लोज़र
यदि आप क्लोज़र को संग्रहीत करते हैं या रिटर्न के बाद चलाते हैं (जैसे टाइमर या अतुल्यकालिक कार्य), तो पैरामीटर को @escaping से चिह्नित करें।
// Need @escaping when storing for later use:
var tasks: [() -> Void] = []
func addTask(_ work: @escaping () -> Void) {
tasks.append(work) // stored to run later
}
addTask { print("run later") }
tasks.forEach { $0() }अतुल्यकालिक पूर्णता
अतुल्यकालिक एपीआई आमतौर पर @escaping पूर्णता हैंडलर लेते हैं, जिन्हें फ़ंक्शन के लौटने के बाद कॉल किया जाता है।
func fetchData(completion: @escaping (String) -> Void) {
// simulate async: call completion in the future
// (In real apps, use DispatchQueue or URLSession)
completion("done") // still escaping by contract (may be called later)
}
fetchData { result in print(result) }ऑटोक्लोज़र
@autoclosure कॉलर को क्लोज़र लिखने के बजाय कोई अभिव्यक्ति पास करने देता है, जिससे पठनीयता बेहतर होती है।
// @autoclosure converts an expression into () -> Bool automatically.
func logIf(_ condition: @autoclosure () -> Bool) {
if condition() { print("Condition is true") }
}
let x = 3
logIf(x > 1) // no braces needed; expression is turned into a closureऑटोक्लोज़र + एस्केपिंग
@autoclosure @escaping पास की गई अभिव्यक्ति को बाद में मूल्यांकन करने के लिए संग्रहीत करता है—कैप्चर की गई स्थिति और समय का ध्यान रखें।
// You can combine @autoclosure with @escaping:
// (be careful: the expression is captured and evaluated later)
var checks: [() -> Bool] = []
func enqueueCheck(_ condition: @autoclosure @escaping () -> Bool) {
checks.append(condition) // stored to run later
}
var threshold = 10
enqueueCheck(threshold > 5) // captures current variable by reference semantics
threshold = 3
print(checks.map { $0() }) // re-evaluates with updated thresholdएस्केपिंग का नियम
त्वरित जाँच: @escaping की आवश्यकता कब होती है?
पुनरावलोकन
पुनरावलोकन: क्लोज़र डिफ़ॉल्ट रूप से नॉन-एस्केपिंग होते हैं। संग्रहीत किए जाने या बाद में कॉल किए जाने पर @escaping का उपयोग करें। अधिक साफ़ कॉल साइट के लिए @autoclosure का उपयोग करें और इसे @escaping के साथ सावधानी से मिलाएँ।
एआई शिक्षक के साथ Swift सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 122
- पाठ
- 409
अक्सर पूछे जाने वाले प्रश्न
क्या “Escaping बनाम non-escaping, autoclosures” पाठ निःशुल्क है?
हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Escaping बनाम non-escaping, autoclosures” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
“Escaping बनाम non-escaping, autoclosures” में मैं क्या सीखूँगा?
डिफ़ॉल्ट non-escaping क्लोज़र और @escaping (रिटर्न के बाद संग्रहीत या उपयोग किए जाने वाले) क्लोज़र का अंतर समझें और lazy evaluation वाले सुगम call site के लिए @autoclosure का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।
“Escaping बनाम non-escaping, autoclosures” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- क्लोज़र और कैप्चर की मूल बातें
- कैप्चर सूची — weak/unowned और मान कैप्चर
- Escaping बनाम non-escaping, autoclosures