Swift - 尾随闭包语法

14

我正在学习苹果的Swift编程语言,使用尾随闭包语法时遇到了一些问题,例如:

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

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

怎么修复它?

1个回答

27

您的闭合语法有误

test("hello", {(name: String) in 
    println("callback")
})
或者
test("hello", {
   println("callback: \($0)")
})
或者
test("hello") {(name: String) in 
    println("callback")
}

或者

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

我还有一个问题,这个resolve(name: name)会抛出一个错误use of unresolved identifier 'name'。如何在回调调用中传递参数? - Kosmetika
嗨,我不明白。你能分享一下出错的代码吗? - Christian Dietrich
我有一个问题... 在您上面提供的第一个代码示例中,您有 "{(name: String) in"。在此上下文中使用 "in" 的语义含义是什么? - jmg
"in" 是参数和语句之间的分隔符。 - Christian Dietrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接