흐름을 제어하는 문법.
이 친구들을 만나면 코드의 흐름이 바뀌기 때문에 흐름제어랑 관련 됐다고 하나 보다.
● 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)을 함께 사용 한 것을 처음 봤다.
아니 이렇게도 쓸 수 있어?! 하는 것들.
저번에는 배열을 이용하여 중복 코드를 줄이는 것을 알게 됐고
오늘은 튜플과 스위치를 함께 쓰는 것들.
정형화된 예제가 아니라 재밌고 새롭다.
'Coding' 카테고리의 다른 글
Swift 클로저(closures) (0) | 2017.11.30 |
---|---|
Swift 함수(Func) +함수와 개발에 관한 개인적인 기억들. (0) | 2017.11.27 |
Swift 반복문 (For, While) (0) | 2017.11.26 |
Swift 데이터 타입- 컬렉션: 딕서너리(Dictionary) (0) | 2017.11.26 |
Swift 데이터 타입- 컬렉션: 배열(Array) (0) | 2017.11.26 |