-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
| 구분 | if let | guard else |
|---|---|---|
| 목적 | 옵셔널 값을 안전하게 추출하여 조건부로 코드 실행 | 옵셔널 값을 안전하게 추출하고 조건 불만족 시 빠르게 함수를 종료 |
| 사용 위치 | 함수 내 어디서든 사용 가능 | 주로 함수의 시작부분에서 사용하여 초기 조건을 검증 |
| 스코프 | 바인딩된 변수는 if 블록 내에서만 사용 가능 | 바인딩된 변수는 guard 이후의 코드 전체에서 사용 가능 |
| 가독성 | 중첩 사용 시 가독성 저하 가능 | 조건 불만족 시 명확하게 초기에 처리하여 가독성 향상 |
| 제어 흐름 | else 블록에서 다른 로직 수행 가능 | else 블록 내에서는 함수를 벗어나야 함 (예: return, continue, break, throw) |
| 사용 | 조건부로 복잡한 로직을 수행할 때 사용 | 필수 조건을 검사하고 조건이 충족되지 않을 때 함수 종료 필요할 때 사용 |
| 장단점 | 장점: 특정 조건에서만 실행하려는 코드 블록에 적합 단점: 중첩되면 가독성이 떨어짐 |
장점: 코드의 안전성을 높이고 초기에 실패 조건을 명확히 처리 단점: 항상 함수를 종료하거나 루프를 벗어나야 함 |
| 예시 | if let 사용: 닉네임이 있을 때만 출력 | guard else 사용: 입력 검증 후 조건 불충족 시 함수 종료 |
예제
if let
func nickname(from 데이터: [String: String?]) {
if let 별명 = 데이터["nickname"] {
print("별명: \(별명)")
} else {
print("별명 제공 X.")
}
}guard else
func enter(input: String?) -> Bool {
guard let 입력데이터 = input, !입력데이터.isEmpty else {
print("유효하지 않은 입력.")
return false
}
// 입력이 유효한 경우 추가 로직 수행
return true
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels