在Swift 1.2之前,您可以对位掩码执行~
(not):
bitmask = ~otherBitmask
但是在Swift 2.0中,位掩码现在是
OptionSetType
并且不能在~
上使用OptionSetType
,现在如何在~
上执行OptionSetType
操作? 最佳答案
您可以对原始值执行“位非”。例子:
let otherBitmask : NSCalendarOptions = [.MatchLast, .MatchNextTime]
let bitmask = NSCalendarOptions(rawValue: ~otherBitmask.rawValue)
如果您经常需要,可以定义一个泛型
~
operator forOptionSetType
:prefix func ~<T : OptionSetType where T.RawValue : BitwiseOperationsType>(rhs: T) -> T {
return T(rawValue: ~rhs.rawValue)
}
let otherBitmask : NSCalendarOptions = [.MatchLast, .MatchNextTime]
let bitmask = ~otherBitmask