我正在尝试编写一个可以将任何函数作为参数并在Swift中执行的函数。我已经尝试过这种方法:
public func anyFunc<P, T> (_ function: (P...) -> T) {
_ = function()
}
然后尝试:
anyFunc(print("hello"))
这产生
ERROR: 'print' produces '()', not the expected contextual result type '(_...) -> _'
我怎样才能做到这一点(可行)?
最佳答案
像这样使用@autoclosure
怎么样:
func anyFunc<T>(_ closure: @autoclosure () -> T) {
let result: T = closure()
// TODO: Do something with result?
}
anyFunc(print("hello"))