티스토리 뷰

CS/Swift

[Swift]흐름제어

Napster 2017. 11. 1. 13:30

Swift

3장 흐름제어

if, switch

스위프트의 조건문은 if와 guard문이 있다. 보통 guard문은 빠른 종료와 실행조건이 바로 보인다는 점이 코드의 가시성을 높혀준다.

import UIKit

let integerVal: Int = 5

switch integerVal {
case 0:
  print("0")
case 1...10:
  print("1~10")
  fallthrough
case Int.min..<0, 101..<Int.max: //한번에 여러조건과 비교할 수 있다.
  print("Value < 0 or Value > 100")
  break
default:
  print("10 < Value <= 100")
}

값 바인딩을 사용한 튜플 with case 구성


import UIKit

typealias NameAge = (name: String, age: Int)

let tupleValue: NameAge = ("yagom", 99)

switch tupleValue {
case ("yagom",99):
  print("정확히 맞추셨습니다.")
case ("yagom", let age):
  print("이름만 맞췄고 나이는 \(age)입니다.")
case(let name, 99):
  print("나이만 맞추셨고 이름은 \(name)입니다.")
default:
  print("who do you find it?")
}

다음 예는 열거형을 입력 값으로 받는 switch 구문입니다.


import UIKit

enum School{
  case primary, elementary, middle, high, college, university, graduate
}

let highestLevel: School = .graduate

switch highestLevel {
case .primary:
  print("my last level is primary")
case .elementary:
  print("my last level is elementary")
case .middle:
  print("my last level is middle")
case .high:
  print("my last level is high")
case .college, .university:
  print("my last level is college, university")
case .graduate:
  print("my last level is graduate")
}

for문은 스위프트에서 내부에서 i값을 조절해도 처음 정해진 i값만큼 움직인다.. 트릭을 쓸 수가 없다 그래서, while을 사용해야한다. for in 구문에서 Dictionary타입은 튜플로 지정되어 넘어온다.


import UIKit

//Dictionary
let friends: [String: Int] = ["Jay": 35, "namgue": 25, "simchun": 25]

for tuple in friends {
  print(tuple)
}


import UIKit

//Dictionary
let friends: [String: Int] = ["Jay": 35, "namgue": 25, "simchun": 25]

for tuple in friends {
  print(tuple)
}

var friends1: [String] = ["yagom", "napster", "simchun"]

while friends1.isEmpty != true {
  print(friends1.removeFirst())
}

removeFirst()는 배열의 앞요소를 지우면서 값을 반환한다. 연결리스트와 비슷한 동작을 하는것 같다.

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

[Swift]오늘의 이슈 - 예외처리관련  (0) 2017.11.05
[Swift]String 문자열 하나씩 쪼개기  (1) 2017.11.03
[Swift]Closure  (2) 2017.11.01
[Swift]함수  (0) 2017.11.01
[Swift]기본, 데이터 타입  (0) 2017.11.01
Comments