Swift 中具有新泛型的泛型扩展

Generic-type extension with a new generic type in Swift

我想扩展泛型类型 Array<Element> 并在 Element 上添加约束,后者依赖于另一个泛型类型,例如 Element == Optional<Wrapped>.

Element不是泛型的情况下,很简单:

extension Array where Element == String {
    func merge() -> String { ... }
}

我尝试了以下,但编译器不接受它。

extension Array<Wrapped> where Element == Optional<Wrapped> {
    func merge() -> Optional<Wrapped> { ... }
}

在这种情况下我应该使用什么语法? 提前致谢!

您可以对方法施加约束:

extension Array {
    func merge<T>() -> T? where Element == T? {
        // ...
    }
}