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循环中的语法错误。