728x90
옵셔널
값이 있을수도 없을수도 있음
let opt: Int? = nil
- nil 가능성이 있는 곳에서 직접 확인 하지 않아도 사용할수 있음
- nil 가능성을 문서나 주석으로 남기지 않아도됨
예시)
func func1(optParam: Int?) {}
func func2(param: Int) {}
func1(optParam: nil) // ok
func2(param: nil) // error
optional = enum + general
enum Optional<Wrapped> : ExpressibleByNilLiteral {
case none
case some(Wrapped)
}
let optVal: Optional<Int> = nil // 원형
let optVal2: Int? = nil // 가능
?: 옵셔널
- 기존 변수처럼 사용할수 없음
!: 암시적 추출 옵셔널(implicitly wrapped optional)
- 기존 변수처럼 사용할수 있지만 nil 값이 들어가는 경우 런타임 에러 발생
옵셔널 값 추출
옵셔널 바인딩(binding)
- nil 체크 및 안전한 값 추출
if-let
var val1: String? = "dg"
var val2: String? = nil
if let name = val1, let friendName = val2 {
print("\\(name) and \\(friendName)")
}
// let의 값들이 모두 nil이 아닌 경우에만 출력
옵셔널 강제 추출
- ! 사용
- 권장하는 방법은 아님
func printFunc(name: String) {
print(name)
}
var name: String? = "dg"
printFunc(name!) // ok
name = nil
printFunc(name!) // error
'STUDY > Swift & iOS' 카테고리의 다른 글
Swift 문법 기초 6 (0) | 2022.06.25 |
---|---|
Swift 문법 기초 5 (0) | 2022.06.21 |
Swift 문법 기초 4 (0) | 2022.06.20 |
Swift 문법 기초 2 (0) | 2022.06.09 |
Swift 문법 기초 1 (0) | 2022.06.07 |