Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 회고
- Switch
- PushNotification
- SWIFT
- http
- apns
- Observer
- Git
- 화면전환
- SWIFTUI
- segue
- viewlifecycle
- error
- NotificationCenter
- escaping
- IOS
- struct
- calendar
- protocol
- self
- ScrollView
- mvvm
- uikit
- class
- singleton
- array
- Refresh
- list
- 고차함수
- 글또
Archives
- Today
- Total
seong_hye, the developer
Swift) 문법 정리 - guard문 본문
📘 Swift 문법 정리: guard 문
코드를 작성할 수록 if문이 깊어져서 불편했던 경험 없으신가요?
if문이 깊어지게 되면 지속적으로 들여써야해서 코드의 가독성이 안좋아져요.
이를 위해 사용하는 것이 바로
guard문 입니다.
🔹 문법 설명
'guard: 감시하다' 라는 뜻으로 조건을 일찍 감시하고 코드가 진행될 수 있도록 도와준다.
조건이 틀린 경우는 진행하던 작업을 일찍 끝내버리고, 우리가 원하는 조건의 경우에만 진행하도록 해준다.
if문은 '~면 ~해라' 라는 뜻이라면, guard는 '~아니면 끝내라' 라는 의미이기 때문이다.
따라서 guard문은 '빠른 종료'를 해주는 것이 핵심이다.
반드시 else 블록이 따라와야 하며, 그안 에서 return, break, continue, thorw 중 하나를 사용해야 한다.
🔹 기본 문법
func checkMoney(money: Int?)-> String {
//money가 옵셔널이라면 벗기는 작업
guard let money = money else { return "돈이 없습니다" }
print("\(money)만큼 돈이 존재합니다.")
}
📌 설명
조건을 만족하지 않는 경우 -> else 블록 실행 -> 함수 종료
조건을 만족하는 경우 코드가 다음 줄로 넘어가서 계속 진행 가능
🔹 guard let vs if let
// if let
if let name {
print(name)
} else {
return
}
// guard let
guard let name else {return}
print(name)
📌 비교
비교 항목 | if let | guard let |
중첩 구조 | 내부에 중첩 생김 | 외부 흐림이 깔끔함 |
흐름 | 조건 충족 시 실행 | 조건 불충족 시 탈출 |
변수 스코프 | if let 내부에서만 사용 | 이후 코드 전체에서 사용 가능 |
스타일 | 선택적 처리에 유리 | 필수 조건 검증에 유리 |
➡️guard를 입력값 검증, 초기 상태 체크, 옵셔널 언래핑 등 필수 조건 체크에 많이 사용
🔹 여러 조건을 동시에 검사 가능
func login(id: String?, password: String?) {
guard let id, !id.isEmpty else {
print("아이디를 입력하세요")
return
}
guard let password, password.count >= 6 else {
print("비밀번호는 6자 이상이어야 합니다.")
return
}
print("로그인 시도: \(id)/\(password)")
}
➡️단계별로 빠르게 조건을 체크하고 깨끗한 코드 흐름 유지 가능
🔹 guard는 언제 쓰는 게 좋을까?
쓰임새 | 예시 |
입력값 체크 | guard let 으로 옵셔널 안전하게 해제 |
비즈니스 조건 확인 | guard point >= 0 else { return } |
에러 상황 조기 종료 | guard status == 200 else { throw ...} |
'IOS' 카테고리의 다른 글
Swift) Alert vs Action Sheet (0) | 2022.07.19 |
---|---|
Swift) AutoLayout vs Frame (0) | 2022.07.19 |
Swift) 문법 정리 - inout 키워드 (0) | 2022.07.19 |
Swift)문법 정리 - 고차함수 (0) | 2022.07.12 |
Swift) 문법 정리 - 클로저 (Closure) (0) | 2022.07.12 |
Comments