如何扩展具有泛型类型的结构数组?请参阅以下代码,了解我要做的事情。
struct MyStruct<T: MyProtocol> {
...
}
extension Array where Element: MyStruct<T> { // Not sure if T is supposed to be on this line.
func doWork() -> [T] {
...
}
}
基本上,我如何编写扩展以使方法返回传递给结构的泛型类型的数组。
答案 0 :(得分:4)
您需要创建一个具有关联类型的协议:
protocol MyGenericStructProtocol {
associatedtype GenericType
}
让你的结构直接采用协议,或使用扩展名:
extension MyStruct: MyGenericStructProtocol {
typealias GenericType = T
}
现在您可以在Array扩展名中引用泛型类型:
extension Array where Element: MyGenericStructProtocol {
func doWork() -> [Element.GenericType] {
return []
}
}
上的完整工作示例