我正在尝试编写一个函数,它可以将任何函数作为参数并在Swift中执行。我已经尝试过以下方法:
public func anyFunc<P, T> (_ function: (P...) -> T) {
_ = function()
}
然后尝试使用以下方法:
anyFunc(print("hello"))
这会产生一个错误:'print'产生了'()',而不是预期的上下文结果类型'(_...) -> _'。
我该如何实现这个(并且这可行吗)?
<P, T>
?传递的函数是否应该返回 void? - Ahmad Fprint("hello")
是对函数print
的调用,它返回一个结果(空元组()
)。因此,你对anyFunc
的调用相当于anyFunc(())
,这显然与anyFunc
的参数不匹配。 - dfrib