오늘은 저번 Optional에 이어서 Optional Binding에 대해서 정리해볼거에요.
저번에는 Forced, 강제 추출까지만 정리했으니까 이번에는 안전한 바인딩을 알아봅시당
if, while, guard문을 사용해서 안전하게 옵셔널 바인딩을 할 수 있어요!
if, while, guard문의 기본 Syntax부터 확인해보고 갈게요!
if let name: Type = OptionalExpression {
statements
}
while let name: Type = OptionalExpression {
statements
}
guard let name: Type = OptionalExpression else {
statements
}
원래 let name: Type = OptionalExpression <- 이 자리에 원래는 Condition이 들어가는데
지금은 상수 선언 문법이 위치하고 있는 걸 확인할 수 있어요.
let "상수의 이름" : "자료형" = "초기값(옵셔널 표현식)" <- 이런 구조에요.
이제 요 상수 선언 문법을 바인딩이라고 할게요!
바인딩은 옵셔널을 안전하게 처리하는 구조라고 생각해주시면 될것 같아요.
좀 더 자세히 이야기 해봅시당
원래 Condition일 경우에는 Condition이 True 이어야 statements을 실행했지만,
Optional Binding에서는 먼저 OptionalExpression을 평가합니다.
요 OptionalExpression 값이 리턴 된다면 unwrapping 되어 let으로 선언한 상수에 저장!
이 상태가 옵셔널 바인딩에 성공한 상태입니다.
if, while 에서는 {}안의 구문이 실행, guard는 else 바깥쪽의 구문들이 실행되는거죵
그래서 강제추출과 달리 옵셔널 바인딩에 성공해야지만 구문이 실행되는 안전한 방법입니다!
바로 예시로 확인해볼게요!
var bindingTest: Int? = nil
// 기존 if문
if bindingTest != nil { // condition
print(bindingTest!)
} else {
print("empty")
}
// Optional Binding if문
if let binding = bindingTest { // 형식 추론이기 때문에 type 생략 가능
print(binding)
// 새롭게 선언된 binding의 if문 안에서만 사용 가능
} else {
print("empty")
}
기존 if문에서는 nil이 아니면 강제추출을 했는데
if문의 Optional Binding을 사용하면 if문 자체를
unwrapping에 성공해야 실행하기 때문에 더 안전해요!
그리고 코드가 더 직관적이다는 장점이 있죵
나머지 while, guard 문도 똑같아서 두개는 스킵하고 넘어갈게요.
마무리
생각보다 되게 간단하게 옵셔널을 안전하게 추출할 수 있는데 맨 처음에는 헷갈렸던거 같아요.
근데 몬가.. 보다보면 익숙해지고 당연하게 보이는거 같으니 이해가 안 간다면 꾸준히 보시면 될거 같슴니다...
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법] Property를 알아보자 (0) | 2023.06.16 |
---|---|
[Swift 기초문법] Closure 를 알아보자 (2) | 2023.06.16 |
[Swift 기초문법] Optional Chaining에 대해 알아보자 (2) | 2023.03.02 |
[Swift 기초문법] Optional을 알아보자 (2) | 2023.02.11 |
[Swift 기초문법] Guard문을 알아보자 (0) | 2023.02.08 |