gpt4 book ai didi

Swift:在switch中初始化后获取子类变量

转载 作者:行者123 更新时间:2023-11-28 15:29:22 25 4
gpt4 key购买 nike

我想不出一个好的标题。

如果我有一个 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
}

请发送帮助,我一直在想一个解决方案太久了。

最佳答案

因为函数 'bark' 的定义仅在 'Dog' 类中,而您正试图在 'Animal' 上调用它。一种选择是制作一个界面并通过“动物”实现它或以下是将对象转换为“狗”的另一个选项。

 (animal as! Dog).bark() // Value of type 'Animal' has no member 'bark'

关于Swift:在switch中初始化后获取子类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44884744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com