[Swift] Swift 문법 (6) - 조건문(if, switch)
이번 포스팅은 Swift의 조건문(Conditionals) 에 대해 알아보려고 한다. 조건문은 더욱이 여타 프로그래밍 언어와 많이 다르지 않다.
상대적으로 난이도도 어렵지 않은 내용이라, 간단한 포스팅으로 정리해보겠다!
📙 if 문
if문은 조건문에서 가장 흔하게 볼 수 있는 형태이다.
특정 조건에서 발생하는 로직을 작성하며, 이외 케이스를 위한 else, 추가조건 분기를 위한 else if 등이 있다.
let a: Int = 2
if a < 0 {
print("음수!")
}
else if a = 0 {
print("0!")
}
else {
print("양수!")
}
// 양수!
기본적인 문법은아래와 같으며, else는 이외의 케이스기 때문에 별도의 조건을 설정하지 않는다.
if [조건] {
// 내부로직
}
// else if 혹은 else 필요한 경우
else if [조건] {
// 내부로직
}
else {
// 내부로직
}
📙 switch 문
switch문은 특정 변수(혹은 상수)가 복수의 값을 가질 수 있으며, 여기에 따른 로직을 처리하기 위해 많이 쓰이는 조건문이다.
var a : String = "A"
switch a {
case "A":
print("A")
case "a":
print("a")
default:
print("?")
}
// A
var b : String = "b"
switch b {
case "A"..."Z":
print("대문자")
case "a"..."z":
print("소문자")
default:
print("?")
}
// 소문자
기본적인 문법은 아래와 같다. case에는 값뿐만이 아니라 조건(<, ==) 혹은 범위 연산자도 적용할 수 있다.
특히, Swift의 switch문은 별도로 break를 매 케이스에 걸어줄 필요가 없다는 점이 편리하다.
switch [변수] {
case [케이스1]:
// 로직1
case [케이스2]:
// 로직2
default:
// 기본 로직
}
let fruit = "banana"
switch fruit {
case "apple": // error!
case "strawberry":
print("red")
case "banana":
print("yellow")
case "grape":
print("purple")
default:
print("I don't know~")
}
복수의 케이스가 하나의 로직을 실행해야하는 경우도 존재할 것이다. JS와 달리 위 예시처럼 작성하면, 에러가 발생하게 된다.
이러한 경우엔, 1) fallthrough 키워드를 사용하던가, 2) [케이스], [케이스] 로 연결하면 된다.
// 1) fallthrough
switch fruit {
case "apple":
fallthrough
case "strawberry":
print("red")
case "banana":
print("yellow")
case "grape":
print("purple")
default:
print("I don't know~")
}
// 2) ,(comma) 연결
switch fruit {
case "apple", "strawberry":
print("red")
case "banana":
print("yellow")
case "grape":
print("purple")
default:
print("I don't know~")
}
조건문 역시 다른 프로그래밍 언어와 크게 다르지 않았다. 특히, If문은 초보자가 아니라면 바로 사용할 수 있을 정도인 것 같다.
switch 문에서는 break가 없다는 점, 그리고 fallthrough 키워드 혹은 콤마를 통한 케이스 간 로직공유가 가능한 것 정도 명심하면 되겠다.
이제 Swift의 기본적인 개념들도 어느정도 마무리되는 것 같다. 다음엔, Swift의 타입에 관련된 옵셔널(Optional)에 관해 포스팅하겠다!
📎 출처
- [Swift5 강의] iOS Academy(Part 8 - If Else Conditionals) : https://www.youtube.com/watch?v=rBotA3jwWkY&list=PL5PR3UyfTWvfacnfUsvNcxIiKIgidNRoW&index=8
- [조건문과 반복문] devxoul 님의 깃북 : https://devxoul.gitbooks.io/ios-with-swift-in-40-hours/content/Chapter-2/control-flow.html
- [조건문] 프린스송 님의 블로그 : https://velog.io/@wook4506/iOS-Swift-Swift-%EB%AC%B8%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-2%ED%8E%B8-%EC%A1%B0%EA%B1%B4%EB%AC%B8if%EB%AC%B8-switch%EB%AC%B8
- [조건문] 야곰 님의 블로그 : https://blog.yagom.net/548/