2017-03-19 4 views
-4

Swift 3.0에서 switch 문을 사용하려고합니다. 내 코드에서 내 변수가 무엇이든간에 A를 얻습니다. 왜 나는 A 만 얻는거야? 항상 A를 반환합니다 프로그램은 당신은 단순히 사건의 순서를 반대로 할 수Swift case statement

var grade = 45 

switch grade { 

    case (grade ..< 100): 
     print("A") 
    case (grade ..< 90): 
     print("B") 
    case (grade ..< 80): 
     print("C") 
    case (grade ..< 70): 
     print("D") 

    default: 
     print("F. You failed") 
} 
+0

을 grade' 70보다 작'경우, 당신이 당신의'case' 문의 논리를 방문 할 수 있습니다 (100) 이하가 될 것. –

답변

3

스위치는 위에서 아래로 평가됩니다, 그래서 이후 처음 테스트 (grade < 100)을 충족한다. 일반적으로 스위치 명령문을 가장 제한적인 것으로부터 가장 덜 제한적인 것으로 바꿔야합니다.

+1

'grade'가 70보다 크면 코드에 오류가 발생합니다. – OOPer

7

switch 문은 값을 고려하여 가능한 여러 일치 패턴과 비교합니다. 그런 다음 첫 번째 패턴이 성공적으로 일치하는 코드 블록을 실행합니다. 특정 경우

는 사용하려고 :

var grade = 45 

switch grade { 

case 90 ..< 100: //Numbers 90-99 Use 90...100 to 90-100 
    print("A") 
case (80 ..< 90): //80 - 89 
    print("B") 
case (70 ..< 80): // 70 - 79 
    print("C") 
case (0 ..< 70): // 0 - 69 
    print("D") 

default: 
    print("F. You failed")//Any number less than 0 or greater than 99 

} 

check this

C와 목표 - C의 switch 문에 대조적으로

이, 하단을 통해 해당하지 않는 스위프트의 문을 전환 각 경우 및 기본적으로 다음 하나에. 대신 switch 문 전체 은 첫 번째 일치하는 스위치 케이스가 완료되면 으로 명시 적 break 문을 사용하지 않고 실행을 완료합니다. 이렇게하면 스위치 문을 C에서 사용하는 것보다 안전하고 사용하기 쉽고 은 실수로 두 개 이상의 스위치 사례를 실행하지 않습니다.

감사