Swift OptionSetType 按位或
Swift OptionSetType Bitwise-Or
假设我有以下 OptionSetType
struct Modifier : OptionSetType {
typealias RawValue = Int
var rawValue: RawValue = 0
static let Default: Modifier = [.Public, .Package, .Internal]
static let Public = Modifier(rawValue: 1 << 0)
static let Package = Modifier(rawValue: 1 << 1)
static let Protected = Modifier(rawValue: 1 << 2)
static let Internal = Modifier(rawValue: 1 << 3)
static let Private = Modifier(rawValue: 1 << 4)
static let Static = Modifier(rawValue: 1 << 5)
static let Final = Modifier(rawValue: 1 << 6)
init(rawValue: RawValue) {
self.rawValue = rawValue
}
}
如何确定 Modifier
类型的值是否至少包含 Modifier.Default
中包含的元素之一?
这个呢?
let modifier: Modifier = ...
if Modifier.Default.contains(modifier) {
}
let m = Modifier()
m.contains([.Public]) // false
let m1 = Modifier.Default
m1.contains([.Public, .Package, .Internal]) // true
m1.contains([.Public]) // true
// ....
假设我有以下 OptionSetType
struct Modifier : OptionSetType {
typealias RawValue = Int
var rawValue: RawValue = 0
static let Default: Modifier = [.Public, .Package, .Internal]
static let Public = Modifier(rawValue: 1 << 0)
static let Package = Modifier(rawValue: 1 << 1)
static let Protected = Modifier(rawValue: 1 << 2)
static let Internal = Modifier(rawValue: 1 << 3)
static let Private = Modifier(rawValue: 1 << 4)
static let Static = Modifier(rawValue: 1 << 5)
static let Final = Modifier(rawValue: 1 << 6)
init(rawValue: RawValue) {
self.rawValue = rawValue
}
}
如何确定 Modifier
类型的值是否至少包含 Modifier.Default
中包含的元素之一?
这个呢?
let modifier: Modifier = ...
if Modifier.Default.contains(modifier) {
}
let m = Modifier()
m.contains([.Public]) // false
let m1 = Modifier.Default
m1.contains([.Public, .Package, .Internal]) // true
m1.contains([.Public]) // true
// ....