오늘은 정말 정말 정말 많이 쓰이는 guard 문에 대하여 정리를 해볼거에요.
guard문은 조건이 true일 때 statements를 실행하는 if문과 달리 조건이 False라면 statements를 실행 해요!
early exit라는 말을 보셨을텐데, 이게 조건이 false라면 불필요한 코드를 실행하지 않고 빨리 종료한다는 의미에요!
즉, condition이 False라면 else 블록이 실행된다는 말!
그래서 guard문에는 else 문이 필수로 들어가야 해요.
좀 더 쉽게 어떻게 써야하는지 알아봅시다.
guard condition else {
statements
}
요게 guard문의 syntax입니다.
바로 예시를 확인해 볼게요.
func validate(id: String?) -> String {
guard let id = id else {
return "옵셔널 바인딩에 실패하였어요"
}
return "옵셔널 바인딩에 성공했어요, id는 문자열입니다."
}
함수 설명부터 간단히 해보자면,
id 파라미터로 저장된 문자열에 실제로 문자열이 저장되어 있다면 id라는 상수를 새로 선언하고,
새롭게 생성한 id 상수에 저장되어 있는 문자열(id 파라미터)를 저장하고,
guard문 바깥에 있는 문장을 실행합니다!
즉, "옵셔널 바인딩에 성공했어요, id는 문자열입니다." 라는 문구를 출력되는거죵
만약, id 파리미터로 저장된 문자열에 실제로 문자열이 저장되어 있지 않다면,
else 구문을 통해서 "옵셔널 바인딩에 실패하였어요"라는 문구가 출력되는 함수에요.
요기서, guard문을 하나 더 추가해 볼게요!
func validate(id: String?) -> String {
guard let id = id else {
return "옵셔널 바인딩에 실패하였어요"
}
guard id.count >= 6 else {
return "길이가 6보다 작아서, 옵셔널 바인딩에 실패하였어요"
}
return "옵셔널 바인딩에 성공했어요, id는 문자열이면서 크기는 6이상이에요"
}
두번째 guard 문에서 id 문자열의 길이를 확인합니다.
만약 id 문자열의 길이가 6보다 작다면 else 구문인 "길이가 6보다 작아서, 옵셔널 바인딩에 실패하였어요" 가 출력돼요.
6보다 크다면 두개의 guard문을 모두 만족하니까
"옵셔널 바인딩에 성공했어요, id는 문자열이면서 크기는 6이상이에요"가 출력 되겠죠?!
한번 실행 결과를 확인해보겠습니당
nil, 즉 id 가 String이 아니면 실패,
길이가 6보다 크면 성공,
길이가 6보다 작으면 실패
그럼 이제 if문이랑 어떤 점이 다르냐! 를 알아볼게용
두 함수는 모두 id가 String 이면서 길이가 6 이상이어야 id 값을 출력하는 함수에요!
if문은 str를 if 블록 내부에서만 사용할 수 있기 때문에 중첩 형식으로 조건을 쌓아야해요!
그에 비해서 guard문은 str를 외부 즉, true일 때 사용할 수 있기 때문에 조건이 늘어다너라도 중첩이 없어요.
if문은 else를 생략할 수 있지만,
guard문은 else를 생략할 수 없구요, else 문에서는 return 을 통해서 무조건 scope를 탈출해야 해요.
마무리 하자면,
조건이 많아질수록 guard문이 더 사용하기도 편하고, 코드를 보기도 편하겠죠?!
엄청 엄청 엄청 많이 쓰이는 문법이라서 꼭 알고 가야 할거 같아요!
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법] Property를 알아보자 (0) | 2023.06.16 |
---|---|
[Swift 기초문법] Closure 를 알아보자 (2) | 2023.06.16 |
[Swift 기초문법] Optional Chaining에 대해 알아보자 (2) | 2023.03.02 |
[Swift 기초문법] Optional Binding을 알아보자 (3) | 2023.02.26 |
[Swift 기초문법] Optional을 알아보자 (2) | 2023.02.11 |