你如何可以选择将函数传递给另一个函数?具体来说,假设functionA接受参数functionB.如果functionB不为零,那么你如何在functionA中执行functionB呢?
解决方法
很难看出有什么困难的,所以也许这不是你的意思,因为它似乎很明显;但无论如何,
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 ... } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。