【发布时间】:2018-04-12 18:02:45
【问题描述】:
我正在尝试找到一种将“计数”变量添加到枚举的方法,以允许量化案例的数量。这很简单,并且在硬编码到每个枚举中时效果很好,但逻辑扩展是使其成为协议扩展......但我遇到了上述错误。
阅读其他帖子表明编译器没有足够的信息来实例化枚举。我尝试添加关联类型,但错误仍然存在。这只是我将不得不放弃的东西吗?这不是很重要,但我想了解我做错了什么。
代码如下:
protocol CountableEnum: RawRepresentable {
static var count: Int { get }
}
extension CountableEnum {
static var count: Int {
var max = 0
while let _ = self(rawValue: max) { max += 1 }
return max
}
}
【问题讨论】:
-
与错误本身无关,但请记住,您的
count变量并不总是包含正确的值,因为enum原始值也可以手动设置,在这种情况下它们不必从 0 开始,也不必递增 1。 -
谢谢 - 我知道这是一种风险,但该协议仅用于内部测试过程(生成随机枚举),不会成为公共 API 的一部分。我可能会根据我的偏执程度设置一个测试用例来检查这种情况!
标签: swift enums swift-protocols