SwiftUI

[Swift] 스프트의 switch 의 fallthrough 및 where 구문 예제


case문 구문결합하기

때로는 서로 다른 매칭(case)에 대해 동일한 코드가 실행되어야 하기도 한다. 이럴 때는 각각의 일치하는 경우들을 공통으로 실행될 구문과 묶을 수 있다. 예를 들어, 값이 0, 1, 또는 2일 경우에는 동일한 코드가 실행되도록 switch 구문을 수정할 수 있다.

let value = 1

switch (value) {  
case 0, 1, 2:        
  print("zero, one or two")   
case 3:        
  print("three")    
case 4:       
  print("four")    
case 5:       
  print("five")    
  
default:        
  print("Integer out of range")
 

switch 구문에서 범위 매칭하기

switch 구문 안에 있는 case 구문에 범위 매칭을 구현할 수도 있다. 예를 들어, 다음의 switch 구문은 주어진 온도가 세 개의 범위 중에 매칭되는지를 검사한다.

let temperature = 83

switch (temperature) { 
case 0...49:        
  print("Cold")   
case 50...79:        
  print("Warm")   
case 80...110:      
  print("Hot")   
default:       
  print("Temperature out of range")
}

where 구문 사용하기

where 구문은 case 구문에 부가적인 조건을 추가하기 위해서 사용될 수 있다. 예를 들어, 다음의 코드는 값이 범위 조건에 일치하는지를 검사할 뿐만 아니라 그 숫자가 홀수인지 짝수인지도 검사한다.

let temperature = 54

switch (temperature) {    
case 0...49 where temperature % 2 == 0:       
   print("Cold and even")   
case 50...79 where temperature % 2 == 0:      
   print("Warm and even")    
case 80...110 where temperature % 2 == 0:       
   print("Hot and even")    
default:        
   print("Temperature out of range or odd")
}

fallthrough
스위프트에서는 case 구문 끝에 break를 쓸 필요가 없다. 다른 언어들과는 달리, 스위프트는 case 조건에 일치하면 자동으로 구문 밖으로 빠져나간다. fallthrough 구문을 사용하면 switch 구현부에 예외상황 효과를 주어, 실행 흐름이 그 다음의 case 구문으로 계속 진행하게 할 수 있다.

let temperature = 10
 

switch (temperature) {    
case 0...49 where temperature % 2 == 0:      
   print("Cold and even")       
   fallthrough    
case 50...79 where temperature % 2 == 0:       
   print("Warm and even")       
   fallthrough    
case 80...110 where temperature % 2 == 0:       
   print("Hot and even")       
   fallthrough   
default:        
   print("Temperature out of range or odd")
}

스위프트의 switch 구문에서 break는 거의 사용되지 않지만, default에서 아무런 작업도 할 필요가 없는 경우에 유용하다.

...    default:        
          break
}

-알라딘 eBook <핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍> (닐 스미스 지음, 황반석 옮김) 중에서

Leave a Reply

error: Content is protected !!