본문 바로가기
etc/Swift

조건문

by IT learning 2021. 5. 16.
728x90

if-else

어느 언어에서든지 사용하는 포맷으로 이루어져 있다.

/* 조건문 */

import Swift

let someInteger = 100

// MARK: - if-else

if someInteger < 100 {
    print("100 미만")
} else if someInteger > 100 {
    print("100 초과")
}  else {
    print("100")
} // 100

// 스위프트의 조건에는 항상 Bool 타입이 들어와야한다.
// someInteger는 Bool 타입이 아닌 Int 타입이기 때문에
// 컴파일 오류가 발생한다.

차이점이라면, 괄호를 쳐 주지 않아도 가능하다라는 점과, 중괄호가 꼭 있어야 한다라는 점이다. 그래서 한줄 조건문이 불가능하다.

그리고 조건에는 항상 Bool 타입이 들어와야 한다. 위 코드의 someInteger는 Int 타입이기 때문에 조건문에 someInteger하나만 있을 경우 컴파일 오류가 발생할 것이다.

 

Switch

// 범위 연산자를 활용하면 더욱 쉽고 유용하다.
switch someInteger {
case 0:
    print("zero")
case 1..<100: // .. 이면 1이상100미만이라는뜻
    print("1~99")
case 100:
    print("100")
case 101...Int.max: // ... 이면 101이상 max 이하 (max까지 포함되는 것)
    print("over 100")
default:
    print("unknown")
}


// 정수 외의 대부분의 기본 타입을 사용할 수 있다.
switch "ITlearning" {
case "jake":
    print("jake")
case "mina":
    print("mina")
case "ITlearning":
    print("ITlearning")
default:
    print("unknown")
}
// case 구문에 break를 따로 걸지 않아도 기본적으로 걸어준다.
// 만일 break를 쓰지 않은 것처럼 하고 싶을 경우엔 fallthrough를 사용하면 된다.

switch 는 범위 연산자를 사용하면 더욱 유용하다.

범위 연산자란 코드 중간에 .. 과 ... 이 존재하는 것을 확인할 수 있다.

..은 a이상 b 미만이라는 뜻이고, ...은 a이상 b이하 (b까지 포함되는 것)이다.

 

그리고 정수 외에 대부분의 기본 타입은 사용이 가능하다.

보통 C++의 경우 case 구문을 사용했을 때 break를 걸어 원하지 않는 구문으로 들어가는 것을 막아주곤 하는데, 스위프트는 따로 걸지 않아도 기본적으로 걸어준다. 만약 이게 싫다면 fallthrough를 사용하여 break가 없는 것 처럼 사용이 가능하다.

728x90

'etc > Swift' 카테고리의 다른 글

옵셔널(Optional)  (0) 2021.05.17
반복문  (0) 2021.05.16
함수 고급  (0) 2021.05.16
함수 기본  (0) 2021.05.13
컬렉션 타입  (0) 2021.05.11

댓글

IT_learning's Commit