gpt4 book ai didi

ios - Swift 3.0 - 根据 2 个不同枚举的每种情况调用函数

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

我是新手,还在学习。为了练习,我想尝试一个想法,看看我是否能够自己建模。例如,如果我在枚举中有 2 组数据

protocol Pet {
var type: PetType { get }
}

protocol PetType {}

enum Cat: PetType {
case indoor
case outdoor
}

enum Dog: PetType {
case small
case medium
case large
}

struct MyPet: Pet {
let type: PetType
let age: Int
}

对于每种情况,都会执行一个计算人类年龄的特定函数。所以如果我创建一个实例

let garfield = myPet(type: Cat.indoor, age: 3)
myPet.inHumanYears

它应该执行正确的功能。

我尝试了一些东西,但目前我的知识似乎有限。谁能指导/教导我如何解决这个问题?

谢谢。

最佳答案

enum 是 swift 中一个强大的类型。真正酷的是它可以具有依赖于它是哪个 self (大小写)的函数和属性。通过向枚举添加一些属性,您可以按照您的意愿进行操作。

你的代码看起来像这样:

protocol Pet {
var type: PetType { get }
}

protocol PetType {
func inHumanYears(age: Int) -> Int
}

enum Cat: PetType {
case indoor
case outdoor

func inHumanYears(age: Int) -> Int {
switch self {
case .indoor:
//return you calculations for indoor
case .outdoor:
//return you calculations for outdoor
}
}
}

enum Dog: PetType {
case small
case medium
case large

func inHumanYears(age: Int) -> Int {
switch self {
case .small:
//return you calculations for small
case .large:
//return you calculations for large
case .medium:
//return you calculations for medium
}
}
}

struct MyPet: Pet {
let type: PetType
let age: Int

var inHumanYears: Int {
return type.inHumanYears(age: age)
}
}

PetType 检查它本身是枚举的哪种情况并进行相应的计算。然后你可以这样做:

let garfield = MyPet(type: Cat.indoor, age: 3)
print(garfield.inHumanYears)

希望对您有所帮助!

关于ios - Swift 3.0 - 根据 2 个不同枚举的每种情况调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42177848/

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