Con*_*sed 1 enums static swift
Swift 4.2 有一段很棒的代码来枚举枚举,这个问题不仅仅是关于循环枚举。
我有一个这样的枚举:
enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
}
Run Code Online (Sandbox Code Playgroud)
另外,我想返回一些对象(比如 sessionDetails)。所以我为它创建了一个扩展。
extension RawRepresentable where RawValue == String {
var details: <Some_Object_Type> {
/// Create & return corresponding object
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我想获得中午会议的详细信息,我可以这样做:
MyEnum.session2.details
Run Code Online (Sandbox Code Playgroud)
好吧!现在我想对我的会话进行分组,例如第一批和第二批等。所以在 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]
}
Run Code Online (Sandbox Code Playgroud)
请注意,我们不能将存储的属性与枚举一起使用。这是这里需要“静态”关键字。
我想要的是:
我想获取批次项目的详细信息。以下行将起作用:
MyEnum.firstBatch
Run Code Online (Sandbox Code Playgroud)
它将提供会话 1 和 2 的详细信息(对象)。
问题:
上面的语句只会运行一次,因为它是静态的。每个会话的细节都是动态的,我希望每次使用这个词时都应该调用“细节”.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]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |