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递增(即使这是默认行为)。