2016-06-15 5 views
1

이 코드를 사용하고 싶습니다.저장된 열거 형이있는 조건부 열거 형 스위치

사례 Direction.Right에 거리 매개 변수가있는 열거 형이 있습니다.

enum Direction { 
    case Up 
    case Down 
    case Left 
    case Right(distance: Int) 
} 

이제 Direction 매개 변수를 사용할 수있는 또 다른 열거 형입니다. 나는 Blah 열거에 전환 할 때

enum Blah { 
    case Move(direction: Direction) 
} 

let blah = Blah.Move(direction: Direction.Right(distance: 10)) 

나는

switch blah { 
case .Move(let direction) where direction == .Right: 
    print(direction) 
default: 
    print("") 
} 

... 조건이 같은 Move.Right에 전환 할 수 싶어하지만 난 오류가 ...

'=='_ '타입' '방향의 피연산자에 적용 할 수없는 이진 연산자

,174,

이 방법이 있습니까?

+1

'케이스. 이동 (방향 지정) 방향 == .Up :'은 제게 잘 작동합니다. –

+0

@MartinR hmm ..'이항 연산자 ==는 Direction 타입의 피연산자와 _에 적용 할 수 없습니다. 그래도 깨끗하고 문제를 만들 수 있습니다. 나는 고마워 할게. – Fogmeister

+0

@MartinR 아, 방향에'거리 '를 더하면 방향이 틀려 보인다. 내가 편집 해 ... – Fogmeister

답변

6

==이 관련된 값없이 단지 열거 기본적으로 정의되어 있기 때문에

case .Move(let direction) where direction == .Right: 

컴파일하지 않습니다 코드

case .Move(.Up): 
     print("up") 
    case .Move(.Right(let distance)): 
     print("right by", distance) 

: 실제로는 매우 간단합니다.

+0

우수. 완벽한 감각도 만듭니다. 매개 변수를 수정하려고 했었습니다. 고마워 – Fogmeister