我在尝试创建一个存储函数数组的变量时遇到以下问题:
class MySwiftClass {
// Compilation Error: '()' is not a subtype of 'MySwiftClass'
var arrayOfFunctions: [() -> Int] = [myFunction]
func myFunction() -> Int {
return 0
}
}
实际上这段代码无法编译错误:
'()' 不是 'MySwiftClass' 的子类型
但如果在运行时设置此数组,它会起作用:
class MySwiftClass {
var arrayOfFunctions: [() -> Int] = [() -> Int]()
init() {
arrayOfFunctions = [myFunction]
}
func myFunction() -> Int {
return 0
}
}
任何人都可以解释它是 Swift 编译器的错误还是预期的行为?在第一种情况下,我没有看到任何编译错误的原因,而且错误描述对我来说是有意义的。