Swift - 조건문

이한솔·2023년 7월 25일
0

Swift 문법 🍎

목록 보기
5/32

조건문 (분기문)

프로그램에서 하나 또는 그 이상의 조건값에 따라 특정 구문을 실행하도록 프로그램의 흐름을 분기하는 역할



if 구문

if 구문

조건식의 평가 결과가 true일 때만 코드 블록 내부의 구문을 실행한다.
false면 코드 블록을 빠져나가 if 블록 다음에 위치한 코드를 수행한다.

if <조건식> {
  <실행할 구문> 
}


var adult = 19
var age = 15

if age < adult {
    print("당신은 미성년자!")
}
// 출력값 : 당신은 미성년자!

if ~ else 구문

true일땐 A 구문, false일땐 B 구문을 실행한다.
else 구문에서는 조건식이 사용되지 않기 때문에 if 조건절 없이 단독으로 사용할 수 없다.

if <조건식> {
  <조건이 참일 때 실행할 구문>
} else {
  <조건이 거짓일 때 실행할 구문>
}


var adult = 19
var age = 21

if age < adult {
    print("당신은 미성년자!")
} else {
    print("당신은 성년자!")
}
// 출력값 : 당신은 성년자!

if ~ else if 구문

조건식이 if 조건절을 만족하지 못한 경우에 else if 조건절이 호출되어 자신의 조건식을 만족하는지 체크한다.
else if 구문은 else와 달리 여러 번 사용 가능해서 비교해야 할 값이 여러 개일 때 사용하기 좋다.
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)입니다.")
// 출력값 : 사용하고 계신 브라우저는 사파리입니다.


guard 구문

주어진 표현식이 거짓일 때 else 구문을 실행한다.
표현식의 결과가 참일 때 실행되는 블록이 없다.
(else 구문은 생략할 수 없고, else 블록에는 이후의 코드 진행을 막아주는 return, break 구문이 반드시 포함되어야 한다.)

💡 주로 특정 조건을 만족하지 않은 채로 후속 코드를 실행하면 심각한 에러가 발생하는 것을 방지하고자 전체 구문을 조기 종료하기 위해 사용한다.


guard <조건식 또는 표현식> else {
    <조건식 또는 표현식의 결과가 false 일 때 실행 될 코드>
}

var stopNum = 10

while true {
    stopNum = Int.random(in: 1...10)
    
    guard stopNum <= 8 else {
        print("stopNum = \(stopNum) : 변수가 8 보다 큰 수가 들어와 반복문을 종료합니다.")
        break
    }
    
    print("stopNum = \(stopNum) : 변수가 8 보다 작습니다. 반복문을 계속합니다.")
}

// 출력값 : 
// stopNum = 4 : 변수가 8 보다 작습니다. 반복문을 계속합니다.
// stopNum = 3 : 변수가 8 보다 작습니다. 반복문을 계속합니다.
// stopNum = 9 : 변수가 8 보다 큰 수가 들어와 반복문을 종료합니다.
// 사실 while 문의 조건문에 stopNum <= 8 라는 조건을 넣어주는것이 효율적이다!


switch 구문

입력받은 값을 조건식 여부가 아니라 패턴으로 비교하고 그 결과를 바탕으로 실행 블록을 결정하는 조건문

case 키워드로 시작하는 여러 가능한 패턴을 나열하는 방식으로 구성,
여러개의 조건을 비교해야 할 때 if 구문의 대안으로 사용 가능하다.
비교 대상과 비교 패턴이 일치할 경우 그에 해당하는 구문이 실행된 후 나머지 case에 대한 비교 없이 일치한 코드블록 실행 후 switch 구문 종료한다.
만약 비교 패턴 어느 것과도 일치하지 않았다면, 맨 만지막에 작성된 default 구문의 코드 실행된다.

switch <비교 대상> {
    case <비교 패턴1> :
        <비교 패턴1이 일치했을 때 실행할 구문>
    case <비교 패턴2>, <비교 패턴3> :
        <비교 패턴2 또는 3이 일치했을 때 실행할 구문>
    default : 
        <어느 비교 패턴과도 일치하지 않았을 때 실행할 구문>
}

let val = 2

switch val {
case 1 :
    print("일치한 값은 1입니다")
case 2 :
    print("일치한 값은 2입니다")
case 2 :
    print("일치한 값은 2가 더 있습니다")
default :
    print("어느 패턴과도 일치하지 않았습니다.")
}

// 출력값 : 일치한 값은 2입니다
// (일치하는 비교 패턴이 여러 개 있더라도 맨 처음 일치하는 case 구문 하나만 실행)

let number = 10

switch number {
case ...9: 
     print("warning")
case 10:
     print("lock")
     print("send warning email") // fallthrough로 바꿔서 쓸 수 있음
     fallthrough // 조건문이 바로 종료되는게 아니라 다음 구문으로 이동함
                // 조건과 상관없이 무조건 실행됨, 버그가 발생할 수 있으므로 주의해서 사용해야함.
default:
     print("send warning email")
}

0개의 댓글