About Swift – “guard문, switch-case문”

About Swift – “guard문, switch-case문”

10월 2, 2021

guard문이란?

  • swift 2에 도입된 구문입니다.
  • 표현식이 거짓으로 판단될 경우, 수행될 else절을 반드시 포함해야 합니다.
  • 조건식이 거짓일 경우 실행하는 문장입니다.
  • 특정 조건에 맞지 않을 경우, 현재의 함수나 반복문에서 빠져나갈 수 있도록 하는 조기 출구 전략을 제공합니다.
guard <불리언 표현식> else {
  //표현식이 거짓일 경우, 실행되는 코드를 작성합니다.
  <코드 블록을 빠져 나갈 구문을 작성합니다.>
}
// 표현식이 참일 경우에 실행될 코드는 이곳에 위치합니다.

와 같이 사용합니다.

guard~let의 활용법

  • guard는 제어문 전환 키워드( return, break, continue, throw 등 ) 를 쓸 수 있는 상황이라면 사용이 가능합니다.
  • 함수 뿐만 아니라, 반복문 등 특정 블록 내부에 있으면 사용이 가능합니다.
  • 실무에서, 옵셔널 바인딩 때문에 다중 if~else문을 사용하는 것보다 guard~let문을 사용할 경우 코드의 가독성이 훨씬 좋아집니다.

swich-case문

다음과 같이 다른 경우에 대해서 동일한 코드를 실행해야 할경우를 switch-case문으로 처리할 수 있다는 것입니다.

var value = 3
var days : Int = 0
switch(value)
{
  case 1,3,5,7,8,10,12:
    print("31 일입니다")
  case 4,6,9,11:
    print("30 일입니다")
  case 2:
    print("28 or 29 일입니다")
  default:
    print("월을 잘못 입력하셨습니다")
}

와 같이 말입니다. case가 여러 개인 부분에 대하여 각각을 처리하였습니다.  범위로 지정해서 매칭할 수도 있습니다. 다음의 예제를 살펴봅시다.

let num = 25
let count : String
switch num {
    case 0...9:
  count = "한자리 수"
    case 10...99:
  count = "두자리 수"
    case 100...999:
  count = "세자리 수"
    default:
  count = "네자리 수 이상"
}
print("\(count)입니다.")

처럼, 범위를 지정해서 각각의 case를 만들어 줄 수도 있겠습니다.

where절 : 특정 패턴과 결합하여, 조건을 추가합니다.

var temperature = 60
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")
}

case에 부가적인 조건을 추가하기 위해서 사용하였습니다. 나머지가 0인가, 0이 아닌가로 홀/짝을 판별할 수 있게 해 두었네요.where절은 switch, catch, while, guard, for 등에서 사용 가능합니다.  

var numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in numbers where num >= 6 {
print(num)
}
// 6 7 8 9

제가 이해한 guard, switch-case문입니다.

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.