다른 말로 분기문(Branch Statements)라고도 불리는 조건문은 프로그램에서 하나 또는 그 이상의 조건값에 따라 실행하도록 프로그램의 흐름을 분기하는 역할을 한다.
if 구문은 대부분의 프로그래밍 언어에서 가장 많이 사용되는 구문 중 하나로 if 조건절을 사용하여 조건식의 결과가 참(true)일 때만 블록 내부의 구문을 실행하고, 거짓(false)이면 코드 블록을 빠져나가 if 블록 다음에 위치한 코드를 수행한다.
if <조건식> {
<실행할 구문>
}
키워4드 if 다음에는 조건식이 사용되는데, 이 조건문은 반드시 Bool 타입의 참(ture), 거짓(false)을 판단할 수 있는 형태의 구문이어야 한다. (참고로 숫자의 경우 0만 false 나머지는 모두 true로 인식되는 특징?이 있다.)
if 구문의 예시는 다음과 같다.
var adult = 19
var age = 15
if age < adult {
print("당신은 미성년자!")
}
/* 실행결과
당신은 미성년자!
✅ if ~ else
위의 예에서는 조건식이 true / false 중 하나일 때만 구문을 실행할 수 있었다. 하지만 만약 조건식이 참일 때는 A구문을, 참이 아닐 때는 B구문을 실행하고 싶다면 else를 사용하면된다.
if <조건식> {
<조건이 참일 때 실행할 구문>
} else {
<조건이 거짓일 때 실행할 구문>
}
위의 예시를 좀 더 보충해보면 다음과 같다.
var adult = 19
var age = 21
if age < adult {
print("당신은 미성년자!")
} else {
print("당신은 성년자!")
}
/* 실행결과
당신은 성년자!
age는 21이므로 adult인 19보다 크므로 위 조건식의 조건절은 false가 된다. false의 경우 else 예외처리를 해준다. 즉 age < adult 조건 이외의 경우에는 print("당신은 성년자!")가 실행되는 것이다.
✅ if ~ else if
마지막은 비교할 조건이 여러 개일 경우이다. 조건이 여러개일 경우 else if로 조건의 예외처리를 해주면 보다 깔끔하게 처리할 수 있다.
if <조건1> {
<조건1이 참일 때 실행할 구문>
} else if <조건2> {
<조건2가 참일 때 실행할 구문>
} else {
<앞의 조건들을 전부 만족하지 않았을 때 실행할 구문>
}
이를 이용한 예시는 다음과 같다.
var browser = "Safari"
var browserName : String
if (browser=="IE") {
browserName = "인터넷 익스플로러"
} else if (browser=="FF") {
browserName = "파이어 폭스"
} else if (browser=="Chrome") {
browserName = "크롬"
} else if (browser=="Opera") {
browserName = "오페라"
} else if (browser=="Safari") {
browserName = "사파리
} else {
browserName = "알려지지 않은 브라우저"
}
print("사용하고 계신 브라우저는 \(browserName)입니다")
/* 실행결과
Safari
else if 대신 if를 중첩해서 사용하면 어떻게 되는지 궁금할 수도 있을 것이다. if , if ,if를 반복해서 사용하는 경우 일치하는 조건식이 발견되더라도 거기서 멈추지않고 모든 조건식을 비교한 후에 구문을 마치게된다. 컴퓨터 입장에서 불필요한 자원들을 낭비하는 것이다.
반면, if ~ else if 구문은 차례대로 조건식을 비교하다 일치하는 것이 발견되면 더이상 비교를 진행하지 않고 조건문을 종료하게되기 때문에 if ~ else if 구문으로 조건을 처리하는 것이 바람직하다.
출처 : 꼼꼼한 재은씨의 Swift 문법편
'Swift > 문법' 카테고리의 다른 글
스위프트(Swift) - 조건문 Ⅲ. #available 구문 (0) | 2022.05.02 |
---|---|
스위프트(Swift) - 조건문 Ⅱ. guard 구문 (0) | 2022.04.30 |
스위프트(Swift) - 반복문 Ⅱ. while 구문 (0) | 2022.04.28 |
스위프트(Swift) - 반복문Ⅰ. for ~ in구문 (0) | 2022.04.27 |
스위프트(Swift) - 연산자 (0) | 2022.04.26 |