Синтаксис закрытия с быстрым завершением

#callback #arguments #swift

#обратный вызов #аргументы #swift

Вопрос:

Я погружаюсь в Swift lang от Apple и испытываю некоторые проблемы с использованием завершающего синтаксиса замыкания, например:

 func test(txt: String, resolve: (name: String) -> Void) {
   resolve(name: "Dodo")
}

// Errors here complaining on resolve param
test("hello", (name: String) {
   println("callback")
})
  

Как это исправить?

Ответ №1:

у вас неправильный синтаксис закрытия

 test("hello", {(name: String) in 
    println("callback")
})
  

или

 test("hello", {
   println("callback: ($0)")
})
  

или

 test("hello") {(name: String) in 
    println("callback")
}
  

или

 test("hello") {
   println("callback: ($0)")
}
  

Комментарии:

1. У меня есть еще один вопрос, это resolve(name: name) выдает ошибку use of unresolved identifier 'name' .. как передать аргументы в обратном вызове?

2. привет, я этого не понимаю. можете ли вы поделиться кодом, который терпит неудачу?

3. У меня вопрос… В первом примере кода, который вы предоставили выше, у вас есть «{(name: String) in». Каково семантическое значение «in» при использовании в этом контексте?

4. In — разделитель между параметрами и операторами