2016-07-08 2 views
0

는 다음 OptionSetType스위프트 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에 포함 된 요소 중 하나 이상을 포함할지 여부를 결정하는 것이 내가 가진 말?

답변

2

어떨까요?

let modifier: Modifier = ... 

if Modifier.Default.contains(modifier) { 

} 
+0

은 오 와우 .... 나는 –

0
let m = Modifier() 
m.contains([.Public]) // false 

let m1 = Modifier.Default 
m1.contains([.Public, .Package, .Internal]) // true 
m1.contains([.Public])      // true 
// .... 
+0

매우 흥미로운 바보 같은 느낌. –