Swift: 如何将函数类型值设置为可选变量?

Swift: how to set function type value to optional variable?

我想在需要时将函数用作另一个函数的完成。但是我有一个问题,最好用代码来描述:

...{
   var myCompletion : (() -> Void)? = nil
   if condition {
       myCompletion = myCompletionFunction() // <==========problem here
   }
   someMethodThatCouldHaveCompletion(myCompletion)
   ...
}

func someMethodThatCouldHaveCompletion(completion: (() -> Void)?){
...
}

func myCompletionFunction() {
...
}

我有一个错误:Cannot assign a value of type '()' to a value of type '(()->Void)?'

我试图在将函数设置为 myCompletion 变量后添加 as! (() -> Void)?,但收到另一个错误 Cannot downcast from '()' to a more optional type '(()->Void)?'

那么,有什么办法可以解决吗?我有一种感觉,我错过了 completion: (() -> Void)? 类型的东西。

myCompletion的类型没问题,问题出在这里:

myCompletion = myCompletionFunction()

您没有将 myCompletion 分配给 myCompletionFunction;您正在调用 myCompletionFunction 并将其 return 值分配给 myCompletion,导致类型不匹配。

将该行更改为:

myCompletion = myCompletionFunction