【发布时间】:2021-04-01 23:03:46
【问题描述】:
我正在尝试编写自己的数据组织框架。
我有一个“根”类,它是基础,任何对象功能都应该来自它。例如,函数将是在数组中搜索对象。搜索功能应由子类继承。
我的问题:子类配备了更多属性。因此我想用泛型实现搜索功能。搜索功能应该基于属性中的值工作。例如Child(id: "one") 应该列出 id 为“one”的所有对象。 Child(id: "one", name: "Tom") 应该列出所有 id = one 和 name = Tom的对象。
如果函数要被类继承,是否可以用泛型实现搜索功能?
class ObjectController {
func find<T>(data: Array<T>, searchParams: T ){
dump(data)
dump(searchParams)
// Search logic
/* Something like:
for item in data {
for i_attr in item {
for s_attr in searchParams {
if(s_attr == i_attr){
retrun item // found
}
}
}
}
return nil // not found
*/
}
}
class Root : ObjectController {
var id: String?
init(new_id: String?) {
self.id = new_id
}
}
class Child : Root {
var name: String?
init(new_id: String? = nil, new_name: String?) {
self.name = new_name
super.init(new_id: new_id)
}
}
let Obj1 = Child(new_id: "eins", new_name: "Tom")
let Obj2 = Child(new_id: "zwei", new_name: "Tim")
let Obj3 = Child(new_id: "drei", new_name: "Max")
let data : Array<Child> = [Obj1, Obj2, Obj3]
print(data)
Child().find(data: data, searchParams: Child(new_name: "Tom"))
很高兴收到任何帮助
【问题讨论】: