Arrays 子类类型作为函数参数
我有一个对象数组。数组包含不同的子类Arrays 子类类型作为函数参数,arrays,swift,subclass,Arrays,Swift,Subclass,我有一个对象数组。数组包含不同的子类 class MainClass { } class SubClass1: MainClass{ } class SubClass2: MainClass{ } var arrayOfObjects = [SubClass1(), SubClass2(), SubClass1()] 我想包含一个函数,该函数可以删除属于特定子类类型的所有对象 arrayOfObjects = arrayOfObjects.compactMap { $0 as? Su
class MainClass {
}
class SubClass1: MainClass{
}
class SubClass2: MainClass{
}
var arrayOfObjects = [SubClass1(), SubClass2(), SubClass1()]
我想包含一个函数,该函数可以删除属于特定子类类型的所有对象
arrayOfObjects = arrayOfObjects.compactMap { $0 as? Subclass1 }
如何使用子类类型作为函数参数
func removeObjectsOf(type: //??) {
arrayOfObjects = arrayOfObjects.compactMap { $0 as? type }
}
您可以使用
类型(of:)
或者如果你想把它写成函数
func filter(_ array: [MainClass], with classType: MainClass.Type) -> [MainClass] {
array.filter { type(of: $0) == classType }
}
filter(arrayOfObjects, with: SubClass1.self)
您可以使用
类型(of:)
或者如果你想把它写成函数
func filter(_ array: [MainClass], with classType: MainClass.Type) -> [MainClass] {
array.filter { type(of: $0) == classType }
}
filter(arrayOfObjects, with: SubClass1.self)
可以将此类类型作为泛型类型参数传递:
func removeObjectsOf<T: MainClass>(type: T.Type) {
arrayOfObjects = arrayOfObjects.compactMap { $0 as? T }
}
func removeObjectsOf(类型:T.type){
arrayOfObjects=arrayOfObjects.compactMap{$0 as?T}
}
您可以将此类类型作为泛型类型参数传递:
func removeObjectsOf<T: MainClass>(type: T.Type) {
arrayOfObjects = arrayOfObjects.compactMap { $0 as? T }
}
func removeObjectsOf(类型:T.type){
arrayOfObjects=arrayOfObjects.compactMap{$0 as?T}
}