2014-10-04 1 views
4

Swift의 열거 형은 평등을 비교할 수 없습니다.동일한 Enumeration 값을 비교하는 방법은 무엇입니까? (== 비교가 작동하지 않습니다!)

let areEqual = MyEnum.SomeEnumValue == MyEnum.SomeEnumValue 

그러나,이 컴파일되지 않고 오류가 발생합니다 : Cannot invoke '==' with an argument list of type '(MyEnum, MyEnum)'을 여기에 내가 일을 기대하는 코드입니다.

== 연산자를 사용하여 2 열거 값을 비교할 수 있습니까? 아니면 실제로 스위치 케이스를 작성합니까? 여기


EDIT

자기 함유 예이다. 놀이터를 지나쳐 가면 컴파일 오류가 보일 것입니다.

불만없이 연결된 값이없는 열거 형을 비교할 수 있으므로 Swift 버그와 조금 유사합니다. 그래서 이것은 예상 된 동작이 아니기를 바랍니다 (일부 열거 형을 비교할 수 있지만 다른 열거 형은 비교할 수 없기를 바랍니다).

+2

문제를 재현 할 수 없습니다. 당신은 (최소한의) 완전하고 독립적 인 예제 (enum 정의 포함)를 보여줄 수 있습니까? 또한 열거 형 상수 나 변수 값을 비교하려는 경우 명확하지 않습니다 (나에게). –

+0

전체 코드를 게시 할 수 있습니까? –

+0

@ Martin R 작업 중. 잠시만. – drasto

답변

0

이 나를 위해 작동합니다

enum CompassPoint { 
    case North 
    case South 
    case East 
    case West 
} 

let isEqual = CompassPoint.North == CompassPoint.South 
//false 

또 다른 예 :

enum CompassPoint: Int { 
    case North = 1, South, East, West 
} 

let isEqual = CompassPoint.North == CompassPoint.South 
//false 

이 또한 작동합니다

enum MyEnum { 
    case SomeValue 
    case OtherValue 
    case ThirdValue 
} 


let areEqual = MyEnum.ThirdValue == MyEnum.ThirdValue 

하지만 예는 열거 형이 가지고 다른 유형. 당신은 그들에게 할당 된 다양한 것들만 비교할 수있을 것입니다.

+0

작동하지 않는 부분에 대한 편집을 참조하십시오. 원래 질문에 명시된 문제를 해결할 때이 대답을 삭제 해보십시오. – drasto

관련 문제