解决方法
很难看出有什么困难的,所以也许这不是你的意思,因为它似乎很明显;但无论如何,
func optionalFunctionExpecter(f:(()->())?) { f?() }
func g() { println("okay") } optionalFunctionExpecter(g)
optionalFunctionExpecter { println("okay2") }
以下是以nil表示的方法:
optionalFunctionExpecter(nil)
注意在我执行optionalFunctionExpecter时,当调用nil时,不会发生任何事情:我们不会调用f,我们不会崩溃,我们不会做任何事情.如果你需要知道没有通过,你可以很容易的发现:只需要在optionalFunctionExpecter中询问f == nil,然后根据需要继续进行.为了更多的灵活性,我们可以这样重写:
func optionalFunctionExpecter(f:(()->())?) { if let f = f { f() } else { // ... nil was passed,respond to that fact ... } }