조건문 conditional
if-else 구문
if 뒤의 조건 값에는 Bool 타입의 값만 위치해야 한다
조건을 감싸는 소괄호는 선택사항
if 조건 {
/* 실행 구문 */
} else if 조건 {
/* 실행 구문 */
} else {
/* 실행 구문 */
}
let someInteger = 100
if someInteger < 100 {
print("100 미만")
} else if someInteger > 100 {
print("100 초과")
} else {
print("100")
} // 100
switch 구문
- 스위프트의 switch 구문은 다른 언어에 비해 굉장히 강력한 힘
- 정수타입의 값뿐만 아니라 대부분의 스위프트 기본 타입을 지원하며, 다양한 패턴과 응용 가능.
- 명시적 break를 하지 않아도 자동으로 case마다 break 됩니다.
- fallthrough 키워드를 사용하여 break를 무시할 수 있습니다.
- 쉼표(,)를 사용하여 하나의 case에 여러 패턴을 명시할 수 있습니다.
- 각각의 case 내부에는 실행가능한 코드가 반드시 있어야함
- default 구문은 반드시 작성 (매우 한정적인 값(ex. enum의 case 등)이 비교값이 아닌 한)
switch 비교값 {
case 패턴:
/* 실행 구문 */
default:
/* 실행 구문 */
}
// 범위 연산자를 활용하면 더욱 쉽고 유용합니다
switch someInteger {
case 0:
print("zero")
case 1..<100: // ..< 이상 미만
print("1~99")
case 100:
print("100")
case 101...Int.max: // ... 이상 이하
print("over 100")
default:
print("unknown")
} // 100
// 정수 외의 대부분의 기본 타입을 사용할 수 있다
switch "john" {
case "jake", "john": //쉼표(,)를 사용하여 하나의 case에 여러 패턴을 명시
print("jake or john")
case "mina":
print("mina")
case "ony":
print("ony!!")
default:
print("unknown")
} //jake or john
switch "mina" {
case "jake", "john":
print("jake or john")
case "mina":
print("mina")
fallthrough // break 무시하기 가능
case "ony":
print("ony!!")
default:
print("unknown")
} //mina \n ony!!
let someInteger1 = 50
switch someInteger1 {
case 0:
print("zero")
case 1..<100:
print("1~99")
case 50:
print("50")
default: //디폴트 없으면 실행불가능 !!
print("unknown")
}
//디폴트 있으면 1~99 출력됨
반복문 loop
for-in 구문
- 기존 언어의 for-each 구문과 유사하다
- Dictionary의 경우 이터레이션 아이템으로 튜플이 들어온다
for item(이터레이션으로 들어올 아이템) in items(이터레이션을 돌 콜랙션타입) {
/* 실행 구문 */ 이터레이션을 돌면서 실행구문을 반복적으로 실행
}
var integers = [1, 2, 3]
let people = ["ony": 10, "eric": 15, "mike": 12] //딕셔너리
for integer in integers {
print(integer)
} //1 \n 2 \n 3
// Dictionary의 item은 key와 value로 구성된 튜플 타입으로 들어가게됨
for (name, age) in people { //name이 key, age가 value
print("\(name): \(age)")
} // ony: 10 \n eric: 15 \n mike: 12
while 구문
while 조건 {
/* 실행 구문 */
}
while integers.count > 1 {
integers.removeLast()
}
repeat-while 구문
- 기존 언어의 do-while 구문과 형태/동작이 유사 - do를 사용하지않는 이유는 오류처리구문에서 사용되기때문이다
- 먼저 실행된 이후 조건확인
repeat {
실행 구문
} while 조건
repeat {
integers.removeLast()
} while integers.count > 0