변수에 값이 있을지 없을지 모르는 상황에서는 Optional을 사용하고,
그 값을 안전하게 가져오기 위해 Optional Binding을 사용해서 값을 Unwrapping 한다
여기서 옵셔널 값을 안전하게 추출하기 위해 if let & guard let을 사용한다
01. if let
값이 있는 경우와 값이 없는 경우(nil)를 체크한다
let 상수에 옵셔널로 할당된 값을 할당함으로서 옵셔널을 벗기는 작업을 진행한다
if let은 옵셔널 바인딩으로 특정 값이 존재하는지 확인하고, 그 값이 존재하는 경우에만 특정 코드를 실행하도록 한다
//변수 optionalValue를 Int옵셔널로 선언
var optionalValue : Int?
//'2' 라는 값이 있어도 없을 수 있는 경우를 대비해 Optinal(2)로 출력됨
optionalValue = 2
print(optionalValue)
//if let 사용 시 값이 있는 경우에는 상수에 할당된 값을 출력하면서 옵셔널이 벗겨짐
//else는 필수가 아니지만 값이 없는 경우를 대비해서 사용
if let value = optionalValue {
print(value)
} else {
print("값이 없음")
}
💡 if var 를 사용하지 않는 이유
→ if var 사용 시 코드가 동작은 하지만, 값이 변경될 수 있는 var는 바인딩된 값을 변경할 수 있기 때문에 코드의 흐름을 이해하기 어렵게 만든다. 따라서 if let 사용을 추천한다
💡 불변성 원칙
스위프트는 불변성을 권장하며, 코드의 안정성을 높인다
02. guard let
guard let은 bool 타입의 값이 true일 경우에만 다음 위치한 코드를 실행한다
false일 경우 else 블록 내부 코드가 실행되며 else 내부 코드에서는 제어문 전환 명령어*를 반드시 사용해야하고 생략이 불가능하다
(*제어문 전환 명령어: 프로그래밍에서 코드의 흐름을 변경하거나, 특정 조건에서 빠져나갈 수 있게 해주는 명령어)
func processValue(optionalValue: Int?) {
// guard let을 사용하여 optionalValue를 안전하게 언래핑합니다.
guard let value = optionalValue else {
// optionalValue가 nil일 경우 이 블록이 실행됩니다.
print("Value is nil.")
return
}
// optionalValue가 nil이 아닌 경우 이 블록이 실행됩니다.
print("The value is \(value).")
}
// optionalValue가 nil일 때
processValue(optionalValue: nil) // 출력: "Value is nil."
// optionalValue가 값을 가질 때
processValue(optionalValue: 42) // 출력: "The value is 42."
참고 사이트
[오늘의 Swift 지식] if let과 guard let의 차이는?
Optional Binding을 아시는 분들은 if let을 한 번쯤은 보셨을 겁니다. 오늘은 Optional Binding에서 사용되는 if let과 guard let을 알아보겠습니다 :) guard let과 if let은 공통적으로 옵셔널 바인딩이라는 특징을
jud00.tistory.com
'🍎 Swift > iOS 문법 노트' 카테고리의 다른 글
[🍎 Swift 문법] sort 와 sorted (0) | 2024.07.09 |
---|---|
[🍎 Swift 문법] 제어문 전환 명령어 (0) | 2024.06.27 |
[🍎 Swift 문법] 타입 캐스팅 (0) | 2024.06.25 |
[🍎 Swift 문법] 프로퍼티 옵저버 (0) | 2024.06.11 |
[🍎 Swift 문법] 클래스와 인스턴스 (0) | 2024.06.07 |