【发布时间】:2015-09-04 22:32:33
【问题描述】:
假设我想要一组函数(闭包),稍后我将要分派这些函数(闭包)。我希望所有闭包都将任何类型的 Array 作为单个参数。
我试过了:
var closureList: [(Array) -> Void]
这会导致编译器错误:对泛型类型“数组”的引用需要 <...>
中的参数我不想存储某种类型的 Array 但任何类型的 Array 的闭包,所以我尝试了这个:
protocol GeneralArray {
}
extension Array: GeneralArray {
}
var closureList: [(GeneralArray) -> Void]
这可以编译,但是当我尝试附加一个闭包时:
func intArrayFunc([Int]) -> Void {
}
closureList.append(intArrayFunc)
我收到一个编译器错误:无法使用类型为“(([Int]) -> Void)”的参数列表调用“附加”。
有没有办法在 swift 中将不同类型作为参数的闭包存储在数组中?
【问题讨论】:
-
泛型。 (GeneralArray) -> Void 是预期的,你正在传递 (Int) -> Void。试试 func intArrayFunc([GeneralArray]) -> Void。检查这个stackoverflow.com/questions/29829763/…