2016-06-14 66 views

回答

4

当然,你可以做到这一点在switch

switch a { 
case .A: 
    print("it's A") 
default: 
    print("it's not A") 
} 

或在if语句中使用模式匹配:

if case .A = a { 
    print("it's A") 
} else { 
    print("it's not A") 
} 

如果你仍是如此吻合后感兴趣的相关值,你可以像这样解压:

switch a { 
case .A(let value): 
    ... 
} 

if case .A(let value) = a { 
    ... 
} 

注意@overactor's comment below,你也可以写为case let .A(value) - 这主要是个人喜好的问题。

+0

'if if'支持某种方式还有'a'是一个可选的ABC的情况吗?' –

+1

@MatthieuRiegler当然,你只需在模式后添加一个问号来匹配任意值,例如'if case .A(let值)? = a'或'if case .A? = a' – Hamish

+1

既然你要做的是非常详尽的回答,可能需要补充的是,let也可以在case后面,并且可以匹配包含特定值的枚举。即'如果情况.A(a:1)' – overactor

1

您可以使用if case

enum ABC { 
    case A(a: Int) 
    case B(b: Int) 
} 

let a = ABC.A(a: 1) 

if case .A = a { 
    ... 
}