본문 바로가기
Coding

swift 조건문(if, switch)

by BlissBless 2017. 11. 27.

흐름을 제어하는 문법.

이 친구들을 만나면 코드의 흐름이 바뀌기 때문에 흐름제어랑 관련 됐다고 하나 보다.


● if문

제일 직관적으로 이해 할 수 있었던 문법.

if와, if - else가 있음. 조건이 더 다양할 경우 if - else if - else 로 쓰기도 함.


영어 뜻 그대로 if (만약 ~면 AA하라), if - else (만약 ~면 AA하고, else 그게 아니면 BB 하라) 로 이해 함.


let intA: Int = 9

let intB: Int = 6


if intA > intB {

    

    print("A is bigger then B")

}




● switch 문

처음에 잘 이해 안됐었던 구문.

switch 뜻을 보면, '바꾸다, 무슨 행동을 멈추고 다른 행동을 시작 하다'라는 의미.

00 조건을 만족하는 걸 발견하면 그걸로 바꾸어서 실행하다 이런 뜻이려나.


나는 if를 즐겨 쓰긴 했는데, 복잡한 조건을 작성할 때 switch가 더 많이 쓰인단다.

코드작성한 것을 보면 if 문보다 뭔가 깔끔한 느낌이 들긴 든다.


if 

switch 

let myGPA: Float = 4.0

if myGPA == 4.5 {

    print("A")

} else if myGPA == 4.0 {

    print("B")

} else if myGPA == 3.5 {

    print("C")

} else {

    print("F")

}


let myGPA: Float = 4.0

switch myGPA {

case 4.5:

    print("A")

case 4.0:

    print("B")

case 3.5:

    print("C")

default:

    print("F")

}




열거형과 함께 콤비로 사용하면 더 좋다고 한다.

 

enum Seasons {

    case Spring

    case Summer

    case Fall

    case Winter

}


let season: Seasons = .Winter

switch season {

case .Spring:

    print("Spring is good season to start")

case .Summer:

    print("Summer is hot & humid but good to swim")

case .Fall:

    print("it's time to go to picnic")

case .Winter:

    print("I love christmas!")

}



설명을 읽다보면 switch 문에 break와 fallthrough에 관련 된 언급을 종종 본다.


★break

Swift에서는 break없이도 조건을 순회 하면서 일치하는 패턴 있으면 코드블럭 실행 한뒤 스위치 문에서 빠져 나오기 때문에 없어도 됨.


★fallthrough

fallthrough 영어  그대로 '뚝 아래로 떨어 뜨리다?' 이런 걸로 이해 하고 있었음.

value와 pattern이 일치하면 그 아래꺼 패턴으로 가봐라 그리고 그 code를 실행 시켜.라고.


콤마(,)로도 두 조건을 붙여 쓸 수 있는 데 굳이 왜 필요한거여? 했는데,

역시 있는 건 다 이유가 있는 거더라...



let myGPA: Float = 4.5

switch myGPA {

case 4.5:

    print("퍼팩트!")

    fallthrough

case 4.0:

    print("참 잘했어요")

case 3.5:

    print("C")

default:

    print("F")

}

// 퍼팩트와 참 잘했어요 출력 됨


 


4.0을 받았을 때, '참 잘했어요'만 출력 하고

4.5를 받았을 때, 4.0일 때 출력 되는 것 + 4.5일 때 '퍼팩트'를 출력 하고 싶다고 할 때


콤마를 쓰면 같은 조건이 되는데, fallthrough를 쓰면 뭔가 다른거 작성하지 않고도 원하는 바를 출력 할 수 있다는...




그리고 웰빙글님의 글에서 새롭게 발견한 것.!

switch 구문과 튜플 (Tuple)을 함께 사용 한 것을 처음 봤다.

아니 이렇게도 쓸 수 있어?! 하는 것들.


저번에는 배열을 이용하여 중복 코드를 줄이는 것을 알게 됐고

오늘은 튜플과 스위치를 함께 쓰는 것들.


정형화된 예제가 아니라 재밌고 새롭다.