我试图编写一个可以将任何函数作为参数并在Swift中执行的函数。我尝试过这种方法:
public func anyFunc<P, T> (_ function: (P...) -> T) {
_ = function()
}
然后尝试:
anyFunc(print("hello"))
这会产生ERROR: 'print' produces '()', not the expected contextual result type '(_...) -> _'
我如何实现这一目标(并且可行)?
答案 0 :(得分:7)
如何使用@autoclosure
,如此:
func anyFunc<T>(_ closure: @autoclosure () -> T) {
let result: T = closure()
// TODO: Do something with result?
}
anyFunc(print("hello"))