gpt4 book ai didi

swift - 静态变量在 Swift 中枚举枚举的问题

转载 作者:搜寻专家 更新时间:2023-11-01 06:57:21 26 4
gpt4 key购买 nike

Swift 4.2 有一段很棒的代码来枚举枚举,这个问题不仅仅是循环枚举。

我有一个这样的枚举:

enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
}

此外,我想返回一些对象(比如 sessionDetails)。所以我为它创建了一个扩展。

extension RawRepresentable where RawValue == String {
var details: <Some_Object_Type> {
/// Create & return corresponding object
}
}

所以,如果我想获取中午 session 的详细信息,我可以这样做:

MyEnum.session2.details

好的!现在我想将我的 session 分组为第一批和第二批等。因此在 Enum 中添加了一小段代码:

enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"

static let firstBatch = [session1.details, session2.details]
static let secondBatch = [session3.details, session4.details]
static let weekendBatch = [session1.details, session4.details]
}

请注意,我们不能将存储的属性与枚举一起使用。这是这里“静态”关键字的需要。

我想要的:

我想获取批处理项目的详细信息。下面一行将起作用:

MyEnum.firstBatch

它将给出 session 1 和 2 的详细信息(对象)。

问题:

上面的语句只会运行一次,因为它是静态的。每个 session 的详细信息都是动态的,我希望每次使用 .details

这个词时都应该调用“详细信息”

注意:

我必须将分组项目的详细信息提供给其他一些 util 方法。无法更改 util 方法输入结构。它只需要一组对象来验证。

需要帮助!!

最佳答案

您只需要计算静态属性而不是存储属性。

enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"

static var firstBatch:[String] {
return [session1.details, session2.details]
}

static var secondBatch:[String] {
return [session3.details, session4.details]
}

static var weekendBatch:[String] {
return [session1.details, session4.details]
}
}

关于swift - 静态变量在 Swift 中枚举枚举的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719994/

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