我想了解如何傳遞給方法的參數可用於嵌套閉包。我很緊張,我寫的東西並不總是有可用的原始參數。嵌套閉包中的方法參數
(這些都極大地簡化的例子)
我有我寫的指定閉包作爲參數的方法:
func saveNameAndAgeToServer(serverParams: [String:String], completionHandler: (age: NSNumber) ->()) {
// Connect to a server
// POST a name and dob from serverParams
// Receives a current age in completion:
completionHandler(age: 22)
}
現在別的地方我創造另一種方法,也指定了一個閉合,有兩個參數,並調用第一個函數:
func AwesomeFunc(name: String, dob: NSDate, completionHandler: (isOverTwentyOne: Bool) ->()) {
let formattedDob = NSDateFormatter().stringFromDate(dob)
saveNameAndAgeToServer([name:formattedDob]) { (age) ->() in
if (age as Int) >= 21 {
print("\(name) can have a beer.")
completionHandler(isOverTwentyOne: true)
} else {
print("\(name) is too young to drink, he can have a water.")
completionHandler(isOverTwentyOne: false)
}
}
}
我能夠保證的參數(姓名和出生日期)傳遞到後者本功能離子總是可用?
我想問的是,saveNameAndAgeToServer閉包在內部運行的內存總是有AwesomeFunc的參數可用嗎?我很確定這個功能全部被保留,而任何它所調用的功能都已完成,但會喜歡第二個意見。
我必須直通,沒有在我的大腦任何堅持它已閱讀,謝謝! –