【问题标题】:Extending generic typealias扩展泛型类型别名
【发布时间】:2018-08-17 22:54:28
【问题描述】:

我有一个通用类型别名,例如

typealias StringArray = Array<String>

不能这样扩展:

extension StringArray {
    //Some methods
}

但是有没有可能换一种方式或者让我来写

extension Array where Element == String {
    //Some methods
}

?

【问题讨论】:

    标签: swift generics extension-methods type-alias


    【解决方案1】:

    请注意,类型别名只是现有类型的标签,因此:

    extension StringArray {
        //Some methods
    }
    

    和这个是一样的:

    extension Array<String> {
        //Some methods
    }
    

    这并不能编译,因为这不是扩展的工作方式。如果要过滤泛型,则必须插入 where 子句。有关扩展的更多信息: https://docs.swift.org/swift-book/LanguageGuide/Extensions.html

    有关扩展中的通用where 子句的更多信息:https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多