OptionSet
OptionSet Protocol
Section titled “OptionSet Protocol”OptionSetType is a protocol designed to represent bit mask types where individual bits represent members of the set. A set of logical and/or functions enforce the proper syntax:
struct Features : OptionSet { let rawValue : Int static let none = Features(rawValue: 0) static let feature0 = Features(rawValue: 1 << 0) static let feature1 = Features(rawValue: 1 << 1) static let feature2 = Features(rawValue: 1 << 2) static let feature3 = Features(rawValue: 1 << 3) static let feature4 = Features(rawValue: 1 << 4) static let feature5 = Features(rawValue: 1 << 5) static let all: Features = [feature0, feature1, feature2, feature3, feature4, feature5]}
Features.feature1.rawValue //2Features.all.rawValue //63
var options: Features = [.feature1, .feature2, .feature3]
options.contains(.feature1) //trueoptions.contains(.feature4) //false
options.insert(.feature4)options.contains(.feature4) //true
var otherOptions : Features = [.feature1, .feature5]
options.contains(.feature5) //false
options.formUnion(otherOptions)options.contains(.feature5) //true
options.remove(.feature5)options.contains(.feature5) //false