我正在尝试为操作重新分配一个新值“ doo”,但出现错误“无法将类型'()->()'的值分配为'(myClass)->()->( )'“ 我该如何解决?
class myClass {
var action = foo //function pointer
var actions = [foo, doo] //function pointer array
var i = 12
func foo() {
print("NOP: \(i)")
}
func doo() {
print("doo: \(i)")
}
func change()
{
action = actions[1] //this compiles
//Cannot assign value of type '() -> ()' to type '(myClass) -> () -> ()'
action = doo //doesn't compile :(
//... later:
action(self)() //call the function pointer
}
}
答案 0 :(得分:2)
替换此
action = doo
使用
action = type(of:self).doo // or myClass.doo
问题出在函数change
的内部,而您在引用doo
的函数self
而不是类型myClass
本身