2016-06-14 7 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") 
} 

あなたはケースに一致した後にまだ関連付けられている値に興味があるなら、あなたはそうのようにそれを抽出することができます。あなたもcase let .A(value)としてこれを書くことができます

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

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

@overactor's comment below - それは主に個人的な好みの問題です。

+0

もし 'a'がオプションの' ABC? 'である場合にも 'if case'のサポートがあります –

+1

@MatthieuRieglerもちろん、オプションの場合と一致するパターンの後ろに疑問符を追加するだけです。値)? = a'または 'case_A? = a' – Hamish

+1

あなたは非常に徹底的な答えをしているので、letをケースの直後に置くこともできるし、特定の値を含むenumとマッチさせることもできます。つまり、 'if 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 { 
    ... 
} 
関連する問題