проблема при вызове вложенной функции в swift ios

#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