4.2.1 if 구문

하나 또는 그 이상의 조건을 평가하고 결과에 따라 코드 블록의 실행 여부를 결정하는 if 구문은 대부분의 프로그래밍 언어에서 가장 많이 사용되는 구문 중 하나입니다. if 구문은 몇 가지 형태로 바꾸어 사용할 수 있는데, 이들 형태는 모두 코드 블록을 여닫는 중괄호 { }가 사용된다는 공통점을 가집니다. 아래는 if 구문의 가장 기본적인 형태로 하나의 if 조건절을 사용하여 조건식의 평가 결과가 참(true)일 때만 코드 블록 내부의 구문을 실행하고, 거짓(false)이라면 코드 블록을 빠져나가 if 블록 다음에 위치한 코드를 수행합니다.

if <조건식> {

<실행할 구문>

}

키워드 if 다음에는 조건식이 사용되는데, 이 조건문은 반드시 Bool 타입의 참(true), 거짓(false)를 판단할 수 있는 형태의 구문이여야 합니다. 과거 C 스타일의 if 구문에서는 참, 거짓 대신 0이나 1을 사용할 수 있었지만 스위프트에서는 이를 허용하지 않습니다. 또한 조건식이 복잡한 경우 소활호 ( )를 사용하여 조건식을 감싸 주어도 되지만, 강제 사항은 아닙니다. 조건식 다음에는 { }로 둘러싸인 실행 코드 블록이 작성됩니다. 이 코드 블록 내부에는 주어진 조건이 참일 때 실행할 구만이 들어가는데, 조건문이 참일 때만 실행됩니다. 실제 사용된 예를 보겠습니다.

var adult = 19
var age = 15

if age < adult {
    print("당신은 미성년자!")
}
당신은 미성년자!

if ~ else

위의 예에서는 조건식이 true/false 중 어느 하나일 때에만 구문을 실행할 수 있었습니다. 하지만 만약 조건식이 참일 때에는 A 구문을, 참이 아닐 때에는 B 구문을 실행하고 싶다면, 스위프트에서는 else 구문을 제공합니다. else 구문은 { }로 이루어지는 실행 블록을 가지는 구문으로, if 구문과 함께 사용되어 조건식의 결과가 참이 아닐 때에만 해당 블록을 실행합니다. else 구문에서는 조건식이 사용되지 않기 때문에 if 조건절 없이 단독으로 사용할 수 없습니다.

if <조건식> {

<조건이 참일 때 실행할 구문>

} else {

<조건이 거짓일 때 실행할 구문>

}

else 구문에 연결된 코드 블록은 조건식이 참이 아닌 모든 경우에 실행됩니다. 조건식에서 발생 가능한 모든 경우는 수학적으로 참이거나 참이 아닌 경우 둘 밖에 있을 수 없으므로 if와 else 둘 중의 하나에는 반드시 속하게 됩니다. 다시 말해 if 블록과 else 블록 둘 중의 하나는 반드시 실행됩니다.

앞에서 살펴본 예제를 else 구문으로 확장한 예를 살펴보겠습니다.

var adult = 19
var age = 21

if age < adult {
    print("당신은 미성년자!")
} else {
    print("당신은 성년자!")
}
당신은 성년자!

앞에서 작성했던 if 구문에 else 절을 추가했습니다. 미성년자이면서 동시에 성년자인 경우나 미성년자가 아니면서 동시에 성년자도 아닌 경우는 존재할 수 없으므로 논리적으로 모든 조건식의 결과는 if 또는 else 절 중 하나에 걸리게 되죠. 조건문에 사용된 adult와 age의 값에 따라 실행 결과를 출력합니다.

if ~ else if

마지막으로 살펴볼 형태는 비교할 조건이 여러 개일 경우입니다. 단순히 참, 거짓으로만 판단하기 어려운 여러 개의 조건이 있을 때에는 어떻게 해야할까요?

if <조건1> {

<조건1이 참일 때 실행할 구문>

} else if <조건2> {

<조건2가 참일 때 실행할 구문>

} else {

<앞의 조건들을 전부 만족하지 않았을 때 실행할 구문>

}

else if 구문은 if 절과 함께 사용해야 한다는 점에서 else 절과 비슷하지만 자신만의 조건식을 갖는다는 특성이 있습니다. else if 구문은 조건식이 if 조건절을 만족하지 못한 경우에 호출되어 자신의 조건식을 만족하는지를 체크합니다.

else if 구문은 else와 달리 여러 번 사용할 수 있습니다. 따라서 비교해야 할 값이 여러 개일 때 사용하기 좋습니다. else 구문은 앞에서 진행된 if ~ else if 구문들의 조건 체크가 모두 끝난 후 어느 것에도 속하지 않았을 때에만 실행되어야 하므로 항상 조건문의 맨 마지막에 위치해야 합니다.

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)입니다")
사용하고 계신 브라우저는 사파리입니다

Last updated