/ स्विफ्ट 3 में नेस्टेड फंक्शन - स्विफ्ट, मेथड, सिंटैक्स, स्विफ्ट 3, अलमोफायर

तेजी से 3 - स्विफ्ट, विधियों, वाक्यविन्यास, swift3, alamofire में नेस्टेड समारोह

मैं Alamofire प्रलेखन के माध्यम से जाँच कर रहा था और नीचे कोड पाया

 Alamofire.request("https://httpbin.org/get").responseJSON { response in
debugPrint(response)

if let json = response.result.value {
print("JSON: (json)")
}
}

ऐसा लगता है जैसे फ़ंक्शन के रूप में लिखा गया है

Class.Function().Function{
}

क्या इसे नेस्टेड फंक्शन कहा जाता है? यदि ऐसा है तो मैं वाक्य रचना जानने के लिए एक सरल नेस्टेड फ़ंक्शन कैसे बनाऊंगा

उत्तर:

जवाब के लिए 0 № 1

यह एक नेस्टेड फ़ंक्शन नहीं है, लेकिन फ़ंक्शन की एक श्रृंखला है।

class Alamofire {
static func request(_ url: String)->Request {
//... code ...
return aRequest
}
}

class Request {
func responseJson(completion: (response: Response)->()) {
//code
}
}

तो यही हो रहा है। Alamofire का अनुरोध फ़ंक्शन एक अनुरोध ऑब्जेक्ट लौटा रहा है, जिसमें responseJson फ़ंक्शन है जो पैरामीटर के रूप में एक क्लोजर को स्वीकार करता है।

स्विचेस में यदि क्लोजर पैरामीटर अंतिम एक है, तो पैरामीटर नाम को हटाकर फ़ंक्शन कॉल को संश्लेषित किया जा सकता है और क्लोजर को फ़ंक्शन के रूप में परिभाषित किया जा सकता है।

Alamofire.request("whatever").responseJson(completion: { (response) in
//whatever
})

ठीक वैसा ही जैसा करना है

Alamofire.request("whatever").responseJson(){ (response) in
//whatever
}

यह एक अनुगामी बंद है। आप इसके बारे में अधिक जानकारी पा सकते हैं यहाँ "अनुगामी समापन" पैराग्राफ में।

आशा करता हूँ की ये काम करेगा


जवाब के लिए 0 № 2

आईटी इस विधि जंजीर और अंतिम एक बंद होने वाले अनुगामी का वाक्य विन्यास है।

क्लोज़र कार्यक्षमता के स्व-निहित ब्लॉक हैं जिन्हें पारित किया जा सकता है आपके कोड में आस-पास और उपयोग किया गया।

    func someFunctionThatTakesAClosure(closure: () -> Void) {
// function body goes here
}

// Here"s how you call this function without using a trailing closure:

someFunctionThatTakesAClosure(closure: {
// closure"s body goes here
})

// Here"s how you call this function with a trailing closure instead:

someFunctionThatTakesAClosure() {
// trailing closure"s body goes here
}

क्लोजर के बारे में अधिक जानकारी के लिए पढ़ें यह