티스토리 뷰
프로그래밍에서 가장 중요하다고 할 수 있는 두가지. 조건문, 반복문 중에 조건문에 대해서 알아보자. swift언어는 어떤식으로 조건을 검사하고 분기를 나눌 수 있을까?
if-else
if-else 부터 알아보자. 다른 언어들과 개념상 크게 다른점은 없다. if 다음에 오는 조건문의 참, 거짓에 따라 뒤따라오는 코드를 실행할지 안 할지 분기가 나뉜다.
let age = 18
if (age < 19) {
// too young
}
else if (age > 60) {
// too old
}
else {
// can enter
}
실행 코드가 2줄 이상일 때는 반드시 {}로 묶어 주어야 한다. 단 한 줄 이어도 묶어주는 게 가독성 이 더 높아지므로 한 줄도 묶어주자. 논리적으로 조건문을 통과하지 못했을 때 특별히 다른 작업을 할 필요가 없다면 else if/else 블록을 생략해도 된다.
한가지 특이한 점은 여러개의 조건문을 , 로 나열할 수 있다는 건데, c++에서 && 연산자로 하던 것을 , 로 대체할 수 있다. 물론 &&로 나열해도 된다.
switch
이산적으로 구분된 상태에 따라 수행해야 할 것이 다를 때 사용한다. 개념과 기본 문법은 타 언어들과 크게 다를 게 없다. 다른 점은 case를 , 로 나열하여 여러 경우를 컨트롤 할 수 있다는 것과 break를 마지막에 적어 주지 않아도 된다는 점이다. 한 번 case에 들어가면 다음 case를 만날 때 까지 코드를 실행한다.
var player: String = "YeongMi"
switch player {
case "YeongMi":
position.append(" is lead")
case "EunJeong":
position.append(" is skip")
case "SeonYeong":
position.append(" is second")
case "KyeongAe":
position.append(" is third")
case "ChoHui":
position.append(" is fifth")
// if (player == James) || (player == Tomas)
case "James", "Tomas":
position = "foreigner"
// swift also has break expression too
default:
break
}
변수에 들어있는 값으로 분기하는 것 뿐 아니라 조건이나 범위로 분기할 수 있는 문법을 제공한다. where 키워드는 논리적인 분기를 만들 수 있다.
let point = (3, 5)
switch point {
case let (x, y) where x==y:
print("same")
case let (x, y) where x < y: // this case will execution
print("y is larger than x")
case let (x, y) where x > y:
print("x is larger than y")
default:
break
}
특정 값이 가지는 범위에 대해서도 분기를 나눌 수 있다. 이쯤 되면 swift가 얼마나 직관적인 문법을 제공하는지 알 수 있다. 어, 이게 되네? 그럼 이렇게 해도 될까?
된다.
let point = (0, 5)
switch point {
case (-5...5, 0):
print("on x axis")
case (0, -5...5):
print("on y axis")
case (-5...5, -5...5):
print("int box")
default:
print("out of range")
}
// >on y axis
'Programming > Swift' 카테고리의 다른 글
Swift Beginner | 함수(1) (0) | 2020.11.18 |
---|---|
Swift Beginner | 반복문 (0) | 2020.11.18 |
Swift Expert | nil이 될 수 있는 변수 optional (0) | 2020.11.18 |
Swift Beginner | 변수 (0) | 2020.11.18 |
Swift - 인터페이스 (0) | 2018.03.29 |
- Total
- Today
- Yesterday
- SOCKET
- mongoDB
- Git
- SwiftUI
- machine learing
- C
- 운영체제
- Spring
- Cocos2d-x
- Java
- 알고리즘
- 자료구조
- swift
- C++
- game
- ios
- OS
- 국내여행
- database
- ue4
- C/C++
- DesignPattern
- SHADER
- 수학
- 데이터베이스
- scala
- rxswift
- 드라마
- winsock
- JSP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |