티스토리 뷰

Programming/Swift

Swift Beginner | 조건문

글그리 2020. 11. 18. 15:20

프로그래밍에서 가장 중요하다고 할 수 있는 두가지. 조건문, 반복문 중에 조건문에 대해서 알아보자. 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
링크
«   2025/03   »
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
글 보관함