我想不出一个好的标题。Swift:在初始化开关后获取子类变量
如果我有一个switch语句,其中我从一个类初始化子类,那么它不会让我使用子类的任何函数或变量。这就是我的意思:
class Animal {}
class Cat: Animal {}
class Dog: Animal {
func bark() {
print("SWIFT DOES NOT LET ME BARK")
}
}
enum AnimalType {
case cat, dog
}
func getAnimal(type: AnimalType) -> Animal {
let animal: Animal
switch type {
case .cat:
animal = Cat()
case .dog:
animal = Dog()
animal.bark() // Value of type 'Animal' has no member 'bark'
}
return animal
}
请发送帮助,我一直在想办法解决太久。
什么你的意思做:这是行不通的。有错误吗?如果是这样,请发布错误。 –
@ J.Paravicini类型'动物'的价值没有成员'树皮'...即使它已经被初始化为狗。 – MysteryPancake
问题是,你用“动物”类型声明了动物值变量,即使你给它分配了一个“狗”变量,它仍然是动物类型。你可以将它下载到roght变量 –