दोनों Array और DictionaryforEach(_:)
उदाहरण तरीकों में दस्तावेज के रूप में:के लिए उपयोग करने के लिए कब (_ :) के लिए उपयोग करना है?
एक के लिए में पाश के रूप में ही क्रम में अनुक्रम में प्रत्येक तत्व पर दिए गए बंद के कॉल करता है।
फिर भी, Sequence Overview से अनुकूलित:
एक अनुक्रम मूल्यों है कि आप एक समय में एक के माध्यम से कदम कर सकते हैं की एक सूची है। अनुक्रम के तत्वों पर पुनरावृत्त करने के लिए सबसे आम तरीका फॉर-इन लूप का उपयोग करना है।
यह बताना कि forEach(_:)
या for in
द्वारा अनुक्रम पुनरावृत्ति:
let closedRange = 1...3
for element in closedRange { print(element) } // 1 2 3
closedRange.forEach { print($0) } // 1 2 3
या (सरणी):
let array = [1, 2, 3]
for element in array { print(element) } // 1 2 3
array.forEach { print($0) } // 1 2 3
चाहेंगे एक ही उत्पादन देता है।
क्यों forEach(_:)
भी मौजूद है? यानी for in
लूप के बजाय इसका उपयोग करने का क्या फायदा है? क्या वे प्रदर्शन बिंदु दृश्य से समान होंगे?
एक धारणा के रूप में, यह कार्यात्मक प्रोग्रामिंग के साथ काम करते समय विशेष रूप से एक वाक्य रचनात्मक चीनी हो सकता है।
प्रदर्शन दृष्टिकोण से 'forEach' ** मीटर यू खो ज ** एक' loop' के लिए की तुलना में धीमी है। लेकिन इसका उद्देश्य उद्देश्य-सी के 'मेकऑब्जेक्ट्सफॉर्मफॉर्मर:' – vadian
@vadian के बराबर आसानी से उपयोग किया जा सकता है - डीबग में यह बहुत धीमा बनाता है। रिलीज बिल्ड में जरूरी नहीं है (स्पष्ट रूप से आपके कोड में अन्य चीजों के आधार पर)। उदाहरण के लिए, मैंने रिलीज बिल्ड में लाखों ऑब्जेक्ट्स के साथ सरणी के माध्यम से पुनरावृत्तियों को बेंचमार्क किया और प्रदर्शन अंतर अलग-अलग था। – Rob
@Rob प्रतिक्रिया के लिए धन्यवाद। दरअसल मेरे "बेंचमार्क टेस्ट" डीबग मोड में किए गए थे (केवल प्रोजेक्ट को देखकर) – vadian