Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 枚举案例语句的计数_Swift_Enums - Fatal编程技术网

Swift 枚举案例语句的计数

Swift 枚举案例语句的计数,swift,enums,Swift,Enums,我有点看到这种模式: enum Stuff: Int { case first = 0 case second = 1 case third = 2 case forth = 3 static var count = 4 稍后我们将使用这个count变量,但我真正想要的是枚举中case语句的数量。有没有办法在代码中确定这一点?(提示,我不想信任关联的值)只要只使用整数,就可以添加此值 enum Stuff: In

我有点看到这种模式:

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

        static var count = 4

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

只要只使用整数,就可以添加此值

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)


链接:

您可以将所有案例组成一个数组,然后获取其
计数。实际上,在许多情况下,拥有一个包含所有案例的数组非常有用。每次添加/删除案例时,您仍然必须更新该阵列。Swift 4.2中的简单功能:。谢谢,我是从自己的项目中获得的,我不记得是如何获得此解决方案的。显然,从StackOverflow来看,这对许多枚举都不起作用。有两个假设您忘了提及:带有
Int
原始值的Swift enum不必从0开始(即使这是默认行为),它们的原始值可以是任意的,它们不必按1递增(即使这是默认行为)。