안녕하세요!
오늘은 guard문과 if문의 차이를 비교정리해보겠습니다 :0
1. guard문
- guard 문은 뭔가를 검사하여 그 다음에 오는 코드들을 실행할지 말지 결정, guard 문에 주어진 조건문이 거짓일 때, 여기에 달려있는 코드 블럭이 실행된다.
- 조건식에 이 함수가 수행하는데 필요한 조건을 그대로 나타낸다는 점에서 if문에서 부정적인 조건식으로 표현하는 것보다 가독성이 높은 장점.
- if 문과 다르게, else를 항상 달아야 한다.
func guardFunc (be: String?) {
guard be != nil else { return }
print(be)
}
guardFunc(be: "20")
guardFunc(be: nil)
- 옵셔널 바인딩은 if-let 문법을 사용한 옵셔널 바인딩과 다르게 옵셔널 바인딩된 상수를 조건문 범위 바깥에서도 사용할 수 있다.
- guard문의 경우 상수의 사용범위는 함수 나머지 영역이 된다.
func guardInFunc (string: String?) {
guard let letString = string else { return }
print(letString!, "second param", separator: "")
}
guardInFunc("test")
- 복합 옵셔널 바인딩
- 복합해서 사용가능, 모든 파라미터가 nil이 아닐경우 조건을 충족하고 출력문을 수행한다.
func guardWithCompoundOptionalBinding (firstName: String?, lastName: String?, dateOfBirth: String?) {
guard let fname = firstName, let lname = lastName, let dob = dateOfBirth else { return }
print("\(fname) \(lname) \(dob)")
}
guardWithCompoundOptionalBinding("sun", lastName : "kim", dateOfBirth: "")
2. if-let
var optionalName: String? = "Daeyeon"
var greeting = "Hello!"
if let name = optionalName
{
greeting = "Hello, \(name)"
}
- “non-optional 변수인 name”에 “Optional 변수인 optionalName” 안에 들어 있는 값을 할당할 수 있다면 {} 안의 내용을 실행하라”라는 의미. (name은 내가 만든상수, if 문 안에서만 사용가능하다.
3. 결론
if 문 - 조건이 하나이거나 조건 전제가 단순할 때, 바인딩한 상수를 다른 값에 처리하는 상황
guard 문 - 복잡한 문장일때, 바인딩한 상수를 동일한 스코프에서 사용할 때
'iOS > Swift' 카테고리의 다른 글
| [Swift] 속성 감시자 (Property Observer) (0) | 2022.11.25 |
|---|---|
| [Swift] 서브스크립트 (Subscripts) (0) | 2022.11.25 |
| [Swift] 클래스와 구조체 (Class, Struct) (0) | 2022.11.22 |
| [Swift] Optional (0) | 2022.11.17 |
| [Swift] Array (0) | 2022.11.16 |