首页 > 解决方案 > 如何扩展协议可选,其中 Wrapped 项目是 Equatable 通用元素数组?

问题描述

我会说这个问题是关于正确的扩展声明。

我想扩展用通用元素填充的数组,其中元素符合 Equatable。我设法做到了:

    extension Array where Element: Equatable{
        // my code
    }

但是,我想知道当填充了 Equatable 元素的数组在 Optional 中时如何正确声明扩展?我知道在这种情况下我实际上是在扩展协议 Optional,但我不知道其余的

我在想类似的事情:

    extension Optional where Wrapped: Array  & Equatable {
      // my code
    }

想不通。有任何想法吗 ?

标签: swiftprotocols

解决方案


我认为您不能在扩展级别指定此约束,但是您应该能够在功能级别指定它:

extension Optional {
    func myFunc<T: Equatable>() where Wrapped == [T] {
        // do your thing
    }
}

推荐阅读