#swift
Вопрос:
func check(a: () -> ()){
func a(){
print("A Calling")
}
a()
}
Вызывающая функция
check {
print("Check Calling")
}
В приведенном выше коде я не могу вызвать функцию (), и она будет напрямую выполнять «вызов проверки».
Результат : «Проверка вызова»
Когда я вызываю функцию проверки, она также должна выполнять функцию (), и порядок должен быть
Результат должен быть:
«Призвание»
«Проверьте вызов»
Комментарии:
1. Каков ваш ожидаемый результат? Потому что в настоящее время неясно, хотите ли вы вызвать свою вложенную функцию или «блок завершения»/закрытие… Начните с того, что назовите их по-другому, как было предложено, и вы можете это увидеть…
2. обновлено больше информации
3. обновлено имя параметров
4. Хорошо, теперь ваш код печатается
A Calling
, неCheck Calling
так, как вы описали. Ваш код действительно выполняетсяa()
, что, по-видимому, именно то, что вам нужно. Вопрос решен?5. это не вызов печати(«Проверка вызова»)
Ответ №1:
Проблема с кодом в вашем вопросе заключается в том, что вы вообще не вызываете вложенную функцию. Не помогает то, что вы назвали его так же, как переданную функцию, и, возможно, именно поэтому у вас возникли проблемы с устранением проблемы.
Это работает
func check(completion: () -> Void) {
func localFunction() {
print("A Calling")
}
localFunction()
completion()
}
check {
print("Check Calling")
}
// Outputs:
//
// A Calling
// Check Calling