首页 > 解决方案 > 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> { ... }
}

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

标签: swiftgenericsclass-extensions

解决方案


您可以改为对方法施加约束:

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

推荐阅读