我对swift和试验闭包语法
相对较新运行良好:
fileUpdater.run({ path in println("\(path)") })
但我不能让这个工作:
fileUpdater.run({ (path: String) -> () in {
for file in self.changedFiles {
}
self.changedFiles.removeAll(keepCapacity: true)
println("mounted \(path)")
}})
失败并显示错误
无法使用类型((String) - >())
的参数列表调用run
这是函数定义:
func run(function: (path: String) -> ()) { // more code
更新:以下内容现在通过了基本检查,但随后使LLVM失败。
fileUpdater.run({ path in {
return println("mounted \(path)")
}})
多么糟糕的错误信息:
Global is external, but doesn't have external or weak linkage!
i8* ()* @_TFFFC10SwiftTest211AppDelegate11updateFilesFS0_FT_T_U0_FSST_auL_4pathSS
invalid linkage type for function declaration
i8* ()* @_TFFFC10SwiftTest211AppDelegate11updateFilesFS0_FT_T_U0_FSST_auL_4pathSS
LLVM ERROR: Broken module found, compilation aborted
我正在使用Xcode 6.4(所以我认为Swift 1.x?),如果有帮助的话。
答案 0 :(得分:1)
移除块体周围的额外花括号。它们既不需要也不允许。
这是错误的:
fileUpdater.run({ path in { < curly brace not allowed
println("mounted \(path)")
}})
^
curly brace not allowed
这是正确的:
fileUpdater.run({ path in
println("mounted \(path)")
})