Swift 如何对数组循环中的所有子类进行静态函数调用?

Swift 如何对数组循环中的所有子类进行静态函数调用?,swift,Swift,所有子类都有一个静态函数update,我必须为每个子类调用它们: class subClass1 { static func update() { ... } } subClass1.update() subClass2.update() subClass3.update() 我希望我可以构造一个数组来存储它们,并像这样调用它们: let allSubClasses: [baseClass.Type] = [ subClass1.self, subClass2.sel

所有子类都有一个静态函数
update
,我必须为每个子类调用它们:

class subClass1 {
    static func update() { ... }
}

subClass1.update()
subClass2.update()
subClass3.update()
我希望我可以构造一个数组来存储它们,并像这样调用它们:

let allSubClasses: [baseClass.Type] = [
    subClass1.self,
    subClass2.self,
    subClass3.self,
]

for var i=0; i<allSubClasses.count; ++i {
    allSubClasses[i].update()  // something like this, how to achieve it?
}
let allsubclass:[baseClass.Type]=[
第1.2款,
第2.1款,
第3.2款,
]
对于var i=0;i给定一个基类

class Animal {
    class func update() { }
}
和2个子类

class Dog: Animal { }
class Cat: Animal { }
这就是创建类类型数组的方法

let animals: [Animal.Type] = [Dog.self, Cat.self]
这就是调用
update
静态类函数的方式

for animal in animals {
    animal.update()
}
给定一个基类

class Animal {
    class func update() { }
}
和2个子类

class Dog: Animal { }
class Cat: Animal { }
这就是创建类类型数组的方法

let animals: [Animal.Type] = [Dog.self, Cat.self]
这就是调用
update
静态类函数的方式

for animal in animals {
    animal.update()
}

你是怎么做到的。将其声明为类方法

class BaseClass {
    class func update() {

    }
}


class Subclass1: BaseClass {
    override class func update() {
        print("Subclass1")
    }
}

class Subclass2: BaseClass {
    override class func update() {
        print("Subclass2")
    }
}

class  Subclass3: BaseClass {
    override class func update() {
        print("Subclass3")
    }
}



let allSubclasses: [BaseClass.Type] = [
    Subclass1.self,
    Subclass2.self,
    Subclass3.self
]

for i in 0 ..< allSubclasses.count {
   allSubclasses[i].update()
}
类基类{
类func update(){
}
}
类子类1:基类{
重写类func update(){
打印(“第1子类”)
}
}
类子类2:基类{
重写类func update(){
打印(“第2子类”)
}
}
类子类3:基类{
重写类func update(){
打印(“第3子类”)
}
}
让所有子类:[BaseClass.Type]=[
第1.2款,
第2.1款,
第3.1款
]
对于0中的i..

我猜它是静态的,这将使您的方法成为最终方法,因此您不能在基类中重写它。

您是如何做到的。将其声明为类方法

class BaseClass {
    class func update() {

    }
}


class Subclass1: BaseClass {
    override class func update() {
        print("Subclass1")
    }
}

class Subclass2: BaseClass {
    override class func update() {
        print("Subclass2")
    }
}

class  Subclass3: BaseClass {
    override class func update() {
        print("Subclass3")
    }
}



let allSubclasses: [BaseClass.Type] = [
    Subclass1.self,
    Subclass2.self,
    Subclass3.self
]

for i in 0 ..< allSubclasses.count {
   allSubclasses[i].update()
}
类基类{
类func update(){
}
}
类子类1:基类{
重写类func update(){
打印(“第1子类”)
}
}
类子类2:基类{
重写类func update(){
打印(“第2子类”)
}
}
类子类3:基类{
重写类func update(){
打印(“第3子类”)
}
}
让所有子类:[BaseClass.Type]=[
第1.2款,
第2.1款,
第3.1款
]
对于0中的i..

我猜它是静态的,这会使您的方法成为final,因此您不能在基类中重写它。

您的第一个问题是for循环中的语法错误。您的第一个问题是for循环中的语法错误。