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문입니다.