【问题标题】:Count of enum case statements [duplicate]枚举案例语句的计数[重复]
【发布时间】:2018-10-15 01:28:44
【问题描述】:

我看到了这种模式:

enum Stuff: Int {
        case first = 0
        case second = 1
        case third = 2
        case forth = 3

        static var count = 4

稍后我们将使用这个计数变量,但我真正想要的是枚举中的 case 语句的数量。有没有办法在代码中确定这一点? (提示,我不想相信关联的值)

【问题讨论】:

  • 您可以将所有案例组成一个数组,然后获取其count。实际上,在许多情况下,拥有所有案例的数组很有用。每次添加/删除案例时,您仍然需要更新该数组。
  • 在 Swift 4.2 中很容易:stackoverflow.com/a/50177561/1187415.

标签: swift enums


【解决方案1】:

只要你只使用整数就可以加这个

enum Stuff: Int {
    case first
    case second
    case third
    case forth

    static let count: Int = {
        var max: Int = 0        
        while Stuff(rawValue: max) != .none { max += 1 }
        return max
    }()
}

唯一的问题可能是这是 O(n),而不是 O(1)

链接:How do I get the count of a Swift enum?

【讨论】:

  • 谢谢,我是从我自己的项目中得到的,我不记得我是如何得到这个解决方案的。显然来自stackoverflow
  • 这不适用于许多枚举。您忘记提及 2 个假设:具有 Int 原始值的 Swift 枚举不必从 0 开始(即使这是默认行为)并且它们的原始值可以是任意的,它们不必增加 1 (即使这是默认行为)。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
相关资源
最近更新 更多