ios - Swift:如何有选择地将函数作为参数传递并调用函数?

标签 ios swift

如何选择性地将一个函数传递给另一个函数?具体来说,假设函数 A 接受函数 B 作为参数。如果 functionB 不为 nil,如何在 functionA 内部执行 functionB?

最佳答案

很难看出这有什么难的,所以也许这不是你的意思,因为它看起来非常明显;但无论如何,这里是:

func optionalFunctionExpecter(f:(()->())?) {
    f?()
}

以下是如何使用实际函数调用它:

func g() {
    println("okay")
}
optionalFunctionExpecter(g)

或者,用一个真正的匿名函数调用它:

optionalFunctionExpecter { println("okay2") }

下面是如何使用 nil 调用它:

optionalFunctionExpecter(nil)

请注意,在我的 optionalFunctionExpecter 实现中,当使用 nil 调用时,什么也不会发生:我们不会调用 f,我们赢了'崩溃,我们不会做任何事情。如果您需要知道 nil 已通过,您可以很容易地找到:只需在optionalFunctionExpecter 中询问f == nil 并根据需要在此基础上继续。为了更灵活,我们可以这样重写:

func optionalFunctionExpecter(f:(()->())?) {
    if let f = f {
        f()
    } else {
        // ... nil was passed, respond to that fact ...
    }
}

关于ios - Swift:如何有选择地将函数作为参数传递并调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29981505/

相关文章:

ios - Swift - 以触觉、流畅的方式为按钮设置动画的最佳方式?向下滑动菜单按钮?

ios - 如何使用 NSPredicate 通过 CoreData 中的 NSSet 属性的元素来过滤对象?

ios - swift "timer"变量

ios - UITableView 行高基于单元格内容

iphone - 如何将 touchesEnded 转移到由 touchesBegan 在不同的 UIView 上添加的 UIView?

swift - 如何在 Swift 中使用带有 xib 的导航 Controller

arrays - swift 中的二维数组迭代速度(Beta 4)

ios - 如何找出哪些根记录与CKShare相关?

iOS - 以编程方式更改 CCFile Sprite 图像

ios - UIPageViewController 缓存问题