如何扩展具有通用类型的结构数组?请参阅下面的代码了解我正在尝试做的事情。
struct MyStruct<T: MyProtocol> {
...
}
extension Array where Element: MyStruct<T> { // Not sure if T is supposed to be on this line.
func doWork() -> [T] {
...
}
}
基本上,我将如何编写扩展以使方法返回传递到结构中的泛型类型的数组。
最佳答案
您需要创建一个具有关联类型的协议(protocol):
protocol MyGenericStructProtocol {
associatedtype GenericParameter
}
让您的结构采用协议(protocol),直接或使用扩展:
extension MyStruct: MyGenericStructProtocol {
typealias GenericParameter = T
}
现在您可以在 Array 的扩展中引用泛型:
extension Array where Element: MyGenericStructProtocol {
func doWork() -> [Element.GenericParameter] {
return []
}
}
在 this GitHub gist 上查看完整的工作示例
关于swift - Array 上的扩展,其中元素是 Swift 中的通用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552561/