如何选择性地将一个函数传递给另一个函数?具体来说,假设函数 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/