안녕하세요, 오늘은 Swift에서 정말 자주 사용하는 Guard 문에 대해서 정리해 보았습니다.
제가 생각하는 Guard문의 장점은 if문과 달리 조건이 늘어날 수록 발생하는 코드 중첩을 줄일 수 있다는 건데요, 그래서 if 문 조건이 많이 중첩될 시 guard문을 사용합니다.
우선적으로 사용 문법(syntax)은 아래와 같습니다.
1.일반 문법:
guard condition(Bool표현식) else {
statements
}
2. Optional Binding 문법:
guard let name = optional expression(옵셔널 표현식) else {
statements }
statements
Optional Binding 구현시, 주의할 사항은 if문에서는 저희가 else를 생략할 수 있으나, 가드문에서는 else를 생략할 수 없다는 것입니다. 그리고 else 블럭에서는 Scope를 종료시켜야 하는 되요. 중요한 것은, 이때 종료시키는 것은 Local Scope가 아닌 Guard문을 호출한 Scope를 종료시키는 것입니다. if문에서의 리턴처럼 if 문을 빠져나오는 것과는 다릅니다.
그 외 주요 사항:
-Guard문 은 원하는 조건이 충족되지 않으면, 불필표한 코드는 출력하지 않고 종료합니다. (early exit)
-guard을 사용하면 if문처럼 조건이 늘어날 수록 발생하는 코드 중첩이 줄어듭니다. 즉, else 블럭에서는 코드를 종료해야 하는데요, 다시 언급하지만, 주의할 사항은 이때 종료시키는 것은 해당 로컬스코프가 아닌 Guard문을 호출한 함수자체를 종료시키는 것입니다. (if에서 리턴은 if문을 빠져나오는 것임.)
- if문은 조건이 하나이거나, 조건 자체가 단순할때, 바인딩한 상수를 다른 함수를 처리할 임시값으로 사용시 주로 사용합니다.
- 반면, guard 문은 복잡할 조건을 여러개 구현하거나, 바인딩한 상수를 동일한 scope에서 계속 사용해야 하거나, if 문 조건이 많이 중첩될 시 사용합니다.
가드 문 사용 예:
func validate(id: String?) -> Bool {
guard let id = id else {
return false
}
guard id.count >= 6 else {
return false
}
print(id)
return true
func validateUsingIf() {
var id: String? = nil
if let str = id {
if str.count >= 6 {
print(str)
}
}
}
func validateUsingGuard() {
var id: String? = nil
guard let str = id else { return }
guard str.count >= 6 else { return }
print(str)
}
가드문은 앱 만들때 정말 자주 사용하는데요, 꼭 숙지하시고 연습 많이 하셔서 좋은 결과 있으시길 바랍니다.
'Swift' 카테고리의 다른 글
Swift - Type Casting (0) | 2020.07.22 |
---|---|
Swift - Comparison Operator (비교연산자) (0) | 2020.03.23 |
Swift - In Out Parameters (입출력 파라미터) (0) | 2020.03.22 |
Swift - Generics(제네릭) (0) | 2020.03.22 |
Swift - Self & Super (0) | 2020.03.22 |