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

时间:2016-02-25 14:29:27

标签: swift

所有子类都有一个静态函数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?
}

如何正确地做到这一点?

2 个答案:

答案 0 :(得分:2)

给定基类

class Animal {
    class func update() { }
}

和2个子类

class Dog: Animal { }
class Cat: Animal { }

这是创建类类型数组的方法

let animals: [Animal.Type] = [Dog.self, Cat.self]

这就是你调用update static 类函数的方法

for animal in animals {
    animal.update()
}

答案 1 :(得分:1)

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

fs.readFile(this.directory + file, 'utf8', (err, data) => { 

      //data is BO1_�G���g�����X   
});

我猜你有把它作为静态来使你的方法成为最终的,所以你不能在你的基类中覆盖它。