我正在尝试将函数作为Swift中的参数传递。为了做到这一点,我定义了一个将回调参数作为:
的函数func foo(callback: () -> () = { _ in }) { callback() }
然后我定义了另一个我将使用的函数:
func toBeCalled() -> () {
print("hello world")
}
foo(toBeCalled())
我收到以下错误:
Cannot convert value of type '()' to expected argument type '() -> ()'
以前有人遇到过这个问题吗?我尝试过多种方法,包括使用Void。
谢谢!
答案 0 :(得分:4)
你必须传递函数而不是该函数的结果:
foo(toBeCalled)
toBeCalled
的类型为() -> ()
,但是当您编写toBeCalled()
时,函数会被执行,您将获得返回类型()
。