Я перевіряв документацію 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 повертає об'єкт Request, який має функцію responseJson, яка приймає закриття як параметр.
У swift, якщо параметр закриття є останнім, виклик функції може бути синтезований шляхом видалення імені параметра і визначення закриття як функції так
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
}
Докладнішу інформацію про закриття читайте це