所以我有这段代码:
struct Asset<T>: AssetProtocol{
typealias AssetType = T
var parent: T!
var children: [T]!
init(parent: T, children: [T] = [T](),){
self.parent = parent
self.children = children
}
}
protocol AssetProtocol{
associatedtype AssetProtocolType
var parent: AssetProtocolType! { get }
var children: [AssetProtocolType]! { get }
}
extension Array where Element: AssetProtocol{
fun getExtractParents() -> [<I’m not sure what type should be here the “T” doesn’t work>] {
// iterate here to get all the parents then return it.
}
}
有没有办法可以创建一个数组扩展和一个返回该数组中所有“父”的方法?请注意,“parent”的类型是通用的,如struct Asset。
中所示答案 0 :(得分:0)
所以我觉得我找到了答案。我不确定这是否正确或有效,但它对我有用。
extension Array where Element: AssetProtocol{
func extractParents() -> [Element.AssetProtocolType] {
var parents: [Element.AssetProtocolType] = []
for element in self {
parents.append(element.parent)
}
return parents
}
}
如果有人愿意,我仍然愿意接受建议......
答案 1 :(得分:0)
您的解决方案有效,但是有一种更快捷,更快捷的方法:
extension Array where Element: AssetProtocol {
var parents: [Element.AssetProtocolType] {
return self.map( { $0.parent } )
}
}
编码愉快!