Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 子类类型作为函数参数_Arrays_Swift_Subclass - Fatal编程技术网

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}
}