无法扩展泛型类型,其中占位符是另一个泛型类型

2024-06-23

我想延长一个Array哪里的Element是泛型类型的嵌套类:

class GenericType<T: ExpressibleByInt> {
    class NestedClass {
    }
}

extension Array where Element == GenericType.NestedClass {   // Fails: Reference to generic type 'GenericType' requires arguments in <...>.
...
}

是否有一种语法用于表达泛型的扩展,其中泛型的元素是另一个泛型的嵌套类?


没有办法在扩展级别表达这一点。您必须在方法/下标/初始化器级别执行此操作。 (不幸的是,你的房产运气不佳。)

extension Array {
  func ƒ<T>() where Element == GenericType<T>.NestedClass { }

  subscript<T>(_: T.Type = T.self) -> Void
  where Element == GenericType<T>.NestedClass {
    get { }
  }

  init?<T>() where Element == GenericType<T>.NestedClass {
    nil
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法扩展泛型类型,其中占位符是另一个泛型类型 的相关文章

随机推荐