我想不出一個好的標題。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變量 –