Swift - 如何在函数参数中传递带参数的函数?

时间:2014-07-13 09:21:45

标签: function parameters swift

我知道标题听起来很复杂,但问题并非如此。

我有这个Swift代码:

class MyClass {
let helloWorld: (check: Bool)->()

init(helloWorld: (check: Bool)->()) {
    self.helloWorld = helloWorld
    }
}

let instanceOfMyClass = MyClass(helloWorld: (check: Bool) -> {

})

这给了我一个错误。最后一条指令的正确语法是什么?

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用:

let instanceOfMyClass = MyClass(helloWorld: { (check) in println(check) } )

但是如果闭包是最后一个参数,你可以使用 trailing closure 语法,其中闭包是在函数外写的(在你的情况下是init)括号 - 这更容易阅读:

let instance = MyClass() { (check) in
    println(check)
}

还有其他快捷方式来定义闭包,例如:

let instance2 = MyClass() { println($0) }

但我建议你阅读官方快速书中的全部closure chapter

注意:在上面的代码中,将println(...)替换为您的实际处理