Front-End(Mobile)/iOS & Swift

[Swift] Swift 문법 (6) - 조건문(if, switch)

ttaeng_99 2022. 1. 29. 00:15
반응형

이번 포스팅은 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/

반응형