Swift 中具有新泛型的泛型扩展
Generic-type extension with a new generic type in Swift
我想扩展泛型类型 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> { ... }
}
在这种情况下我应该使用什么语法?
提前致谢!
您可以对方法施加约束:
extension Array {
func merge<T>() -> T? where Element == T? {
// ...
}
}
我想扩展泛型类型 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> { ... }
}
在这种情况下我应该使用什么语法? 提前致谢!
您可以对方法施加约束:
extension Array {
func merge<T>() -> T? where Element == T? {
// ...
}
}