扩展通用类型别名

时间:2018-08-17 22:54:29

标签: swift generics extension-methods type-alias

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

typealias StringArray = Array<String>

不可能这样扩展:

extension StringArray {
    //Some methods
}

但是有可能以其他方式还是我要写

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

1 个答案:

答案 0 :(得分:0)

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

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