나의 발자취
guard문 본문
guard(감시하다) : 조건이 맞는지 감시한다.
사용 이유
if문을 사용할 때, 조건이 여러개가 된다면 들여쓰기가 많아져서 가독성이 떨어진다는 단점이 있다. 또한 여러개의 옵셔널 타입을 안전하게 언래핑할 수 있다. 코드의 영역이 변경되지 않고, guard문에서 선언된 변수를 아래문장에서 사용 가능하기 때문이다.
불만족하는 조건을 사전에 걸러내는 조건문
먼저 감시를 해서 조건을 만족하지 않으면 else문이 실행이 되며 종료시킨다. (early exit) (종료 조건; 함수 내애서는 return / true. 반복문에서는 break / continue. )
조건을 만족하면 else 문 밑의 코드들을 실행한다.
else문이 먼저 등장하는 if문이라고 생각하면 쉽다.
형태
guard password.count >= else { return false }
print("조건에 맞습니다")
guard true else { return false } ⬇️
guard true else { return false } ⬇️
조건을 만족하면 아래줄로 내려가기때문에 .. if문의 else가 계속 들여쓰기가 연속되는 형태와는 다르다.
특징
- 1) else문을 먼저 배치 - 먼저 조건을 판별하여 조기 종료(early exit)
- 2) 조건을 만족하는 경우 코드가 다음 줄로 넘어가서 계속 실행
- 3) 가드문에서 선언된 변수를 아래문장에서 사용 가능 (동일한 스코프로 취급) (guard let 바인딩 관련)
예시
// 반드시 코드를 종료해야하는 조기 종료의 조건이 필요하므로, 로컬스코프(함수/반복문) 내에서만 사용 가능
func check(words: String) -> Bool {
guard words.count >= 5 else {
print("5글자 이하입니다.")
return false // 종료 조건 - 함수 내에서는 return / throw
}
print("\(words.count)글자입니다.")
return true
}
check(words: "안녕하세요")
'앱 개발 > iOS' 카테고리의 다른 글
옵셔널이란? (0) | 2022.05.24 |
---|---|
print문 (0) | 2022.05.23 |
입출력 inout 파라미터 (0) | 2022.05.23 |
Swift :: for ... in stride / 함수 argument label, 가변 파라미터 / guard문 (0) | 2022.05.16 |
WWDC18: iOS Memory Deep Dive (0) | 2022.05.09 |
Comments