扩展通用类型别名
Extending generic typealias
我有一个通用的类型别名,例如
typealias StringArray = Array<String>
无法像这样扩展:
extension StringArray {
//Some methods
}
但是有没有可能换一种方式或者让我写
extension Array where Element == String {
//Some methods
}
?
请注意类型别名只是现有类型的标签,因此:
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
我有一个通用的类型别名,例如
typealias StringArray = Array<String>
无法像这样扩展:
extension StringArray {
//Some methods
}
但是有没有可能换一种方式或者让我写
extension Array where Element == String {
//Some methods
}
?
请注意类型别名只是现有类型的标签,因此:
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