【问题标题】:Generic-type extension with a new generic type in SwiftSwift 中具有新泛型类型的泛型类型扩展
【发布时间】:2019-11-02 14:51:43
【问题描述】:

我想扩展泛型类型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> { ... }
}

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

【问题讨论】:

    标签: swift generics class-extensions


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多