gpt4 book ai didi

swift - 获得一个通用的枚举属性,而不必匹配每个案例

转载 作者:行者123 更新时间:2023-11-28 08:52:23 25 4
gpt4 key购买 nike

我在 Swift 中有以下枚举:

enum Animal {
case Cat(name: String, color: String)
case Dog(name: String, tailLength: Double)
case Cow(name: String, isBrown: Bool)
}

有没有办法在没有开关的情况下获取动物的名字,一个一个地匹配每个案例?像这样的东西:

func animalName(a: Animal) -> String {
// This does not work, you have to use a switch
return a.name
}

最佳答案

如果所有动物类型都有一个名称属性,那么我认为将其明确化会更好。

enum AnimalType {
case Cat(color: String)
case Dog(tailLength: Double)
case Cow(isBrown: Bool)
}

struct Animal {
let name: String
let type: AnimalType
}

我认为以上内容比@JanGreve 的回答更好,因为它允许您简单地执行以下操作:

func animalName(a: Animal) -> String {
// Now the below will work.
return a.name
}

以这种方式从对象中提取名称要容易得多,因为您不需要执行 if case 或 switch case。

关于swift - 获得一个通用的枚举属性,而不必匹配每个案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33869859/

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