2016-09-21 3 views
3

나는 복식으로 작업하여 범위는 0..<360입니다. 나는 8 가지 경우를 가질 switch 문을 만들고 싶다. 0, 90, 180 및 270의 경우와 그 사이의 값의 대/소문자. 반 개방 운영자가 내가 여기서하려고하는 것을 만족시키지 못하는 것 같습니다. 솔루션 사용자 지정 관계형 연산자를 만드는 것일 수 있습니다 생각 해요. 의 그것 <..<Swift에서 사용자 지정 관계 연산자를 만드는 방법

case 0: 
case 0<..<90: 
case 90: 
case 90<..<180: 
case 180: 
case 180<..<270: 
case 270: 
case 270<..<360: 

나는 Bool을 반환하는 사용자 지정 중위 연산자를 만드는 들여다했지만 인수가 LHS와 RHS 만 포함 할 것이기 때문에 문제가 해결되지 않습니다 부르 자.

어떻게하면됩니까?

+0

사례가 상호 배타적 일 필요는 없습니다. 'case : 0' 다음에'case : 0 .. <90'을 붙일 수 있습니다. –

+0

감사합니다 .MartinR. 그건 잘된거야. – MyBikeIsAwesome

+0

실생활에서 "자리 잡아라"라는 숫자를 본 적이 있는지 궁금합니다. 나는 당신이 범위를 가장 많이 발사 할거라 생각한다. –

답변

1

스위치가 불필요하게 복잡합니다. 이 방법이 당신에게 적합한 지 확인하십시오 :

let value: Double = 180 

switch value { 
    case 0: 
     print("exactly 0") 
    case 0..<90: 
     print("less than 90") 
    case 90: 
     print("exactly 90") 
    case 90..<180: 
     print("less than 180") 
    case 180: 
     print("exactly 180") 
    case 180..<270: 
     print("less than 270") 
    case 270: 
     print("exactly 270") 
    default: 
     print("less than 360") 
} 
+0

값이 180.1 인 경우보다 180 일 경우이 작업을 수행해야합니다. 따라서 반 개방 관계 연산자가 내 요구 사항을 충족하지 못합니다. – MyBikeIsAwesome

+0

스위프트의 '케이스'가 빠지지 않습니다. 일치가 발견되는 즉시'switch' 문을 종료합니다. 내 업데이트 된 답변보기 –

+0

업데이트 된 답변이 완벽하게 작동합니다. 고맙습니다. – MyBikeIsAwesome

관련 문제