我有一个包含闭包的数组,其中的闭包类型如下:
typealias FuncT = (()->Void)
我想向包含我的函数的数组添加扩展方法:
extension Array where Element : FuncT {
func execAll() {
self.forEach { (f) in
f()
}
}
}
我收到编译错误:
类型“元素”限制为非协议,非类类型“ FuncT” (aka'()->()')
如何向包含函数的数组添加方法?
答案 0 :(得分:3)
约束where A : B
将A
约束为 class B
的子类,或者约束为符合 protocol { 1}}。函数类型是值类型,而不是类,并且不能符合协议。
您需要的是“相同类型要求” B
。就您而言:
where A == B