일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c언어
- 백준
- windosw 문자열
- PHP
- C
- 자료구조
- 암호수학
- windosws wbcs
- ftz level13
- 스택
- pwnable.kr
- level13
- 파일 시스템
- OSI
- HTML
- SWiFT
- 시간복잡도
- web
- 파이썬
- War Game
- 재귀
- ftz
- 큐
- LoB
- 두근두근 자료구조
- Java
- 미로 탐색 알고리즘
- Stack
- System
- 정렬 알고리즘
- Today
- Total
나의 기록, 현진록
[Swift] 14.2 빠른 종료 본문
스위프트 프로그래밍 3판 - 야곰 지음
14.2 빠른 종료
빠른 종료의 핵심 키워드는 guard이다. guard 구문은 if 구문과 유사하게 Bool 타입의 값으로 동작하는 기능입니다. guard 뒤에 따라붙는 코드의 실행 결과가 true일 때 코드가 계속 실행됩니다. if 구문과는 다르게 guard 구문은 항상 else 구문이 뒤에 따라와야 합니다. 만약 guard 뒤에 따라오는 Bool 값잉 false라면 else의 블록 내부 코드를 실행하게 되는데, 이때 else 구문의 블록 내부에는 꼭 자신보다 상위의 코드 블록을 종료하는 코드가 들어가게 됩니다. 그래서 특정 조건에 부합하지 않다는 판단이 되면 재빠르게 코드 블록의 실행을 종료할 수 있습니다. 이렇게 현재의 코드 블록을 종료할 때는 return, break, continue, throw 등의 제어문 전환 명령을 사용합니다. 또는 fatalError()와 같은 비반환 함수나 메서드를 호출할 수도 있습니다.
guard Bool타입값 else{
예외사항 실행문
제어문전환실행문
}
guard 구문을 사용하면 if 코드를 훨씬 간결하고 읽기 좋게 구성할 수 있습니다. if 구문을 사용하면 예외사항을 else 블록으로 처리해야 하지만 예외사항만을 처리하고 싶다면 guard 구문을 사용하는 것이 훨씬 간편합니다.
//2를 출력하는 프로그램
for i in 0...3{
if i == 2{
print(i)
}else{
continue
}
}
for i in 0...3{
guard i == 2 else{
continue
}
print(i)
}
Bool 타입의 값으로 guard 구문을 동작시킬 수 있지만 옵셔널 바인딩의 역할도 할 수 있습니다. guard 뒤에 따라오는 옵셔널 바인딩 표현에서 옵셔널의 값이 있는 상태라면 guard 구문에서 옵셔널 바인딩된 상수를 guard 구문이 실행된 아래 코드부터 함수 내부의 지역상수처럼 사용할 수 있습니다.
func greet(_ person: [String: String]){
guard let name: String = person["name"] else{
return
}
print("Hello \(name)")
guard let location: String = person["location"] else{
print("I hope the weather is nice near you")
return
}
print ("I hope the weather is nice in \(location)")
}
var personInfo: [String: String] = [String: String]()
personInfo["name"] = "jenny"
greet(personInfo)
personInfo["location"] = "Korea"
greet(personInfo)
'Programming > Swift' 카테고리의 다른 글
[Swift] 15.2 필터 (0) | 2021.09.14 |
---|---|
[Swift] 15.1 맵 (0) | 2021.09.14 |
[Swift] 14.1 옵셔널 체이닝 (0) | 2021.09.13 |
[Swift] Baekjoon 20300 서강근육맨 (0) | 2021.09.09 |
[Swift] 13.4 값 획득 (0) | 2021.09.07 |