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
我想在需要时将函数用作另一个函数的完成。但是我有一个问题,最好用代码来描述:
...{
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