快速关闭错误

时间:2015-09-13 03:43:32

标签: swift closures

我对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?),如果有帮助的话。

1 个答案:

答案 0 :(得分:1)

移除块体周围的额外花括号。它们既不需要也不允许。

这是错误的:

fileUpdater.run({ path in { < curly brace not allowed
    println("mounted \(path)")
}})
^
curly brace not allowed

这是正确的:

fileUpdater.run({ path in
    println("mounted \(path)")
})