我在一个项目中使用了许多按位选项集,每个选项集都包含许多带有all
选项的选项,例如:
struct MyOption: OptionSet {
let rawValue: Int
static let a = Self(rawValue: 1 << 0)
static let b = Self(rawValue: 1 << 1)
static let c = Self(rawValue: 1 << 2)
...
static let last = Self(rawValue: 1 << N)
static let all: Self = [.a, .b, .c, ..., .last]
}
它需要维护许多类似的代码,所以有没有办法消除硬编码的按位移位操作和all
选项?
2条答案
按热度按时间ecfdbz9o1#
你可以使用next
OptionSet
的扩展,它实现了all
选项和一个方便的初始化器:然后你可以重写你的选项集:
gev0vcfq2#
辅助程序库Options正是您所需要的;)