带封闭的数组扩展

时间:2019-01-23 08:16:02

标签: arrays swift closures extension-methods

我有一个包含闭包的数组,其中的闭包类型如下:

typealias FuncT = (()->Void)

我想向包含我的函数的数组添加扩展方法:

extension Array where Element : FuncT {
    func execAll() {
        self.forEach { (f) in
            f()
        }
    }
}

我收到编译错误:

  

类型“元素”限制为非协议,非类类型“ FuncT”   (aka'()->()')

如何向包含函数的数组添加方法?

1 个答案:

答案 0 :(得分:3)

约束where A : BA约束为 class B的子类,或者约束为符合 protocol { 1}}。函数类型是值类型,而不是类,并且不能符合协议。

您需要的是“相同类型要求” B。就您而言:

where A == B