11. 옵셔널
옵셔널의 정의 및 특징
정의
값이 있을 수도 있고 없을 수도 있는 것
특징
옵셔널이 아닌 상수에 nil을 할당하면 오류가 발생한다.
옵셔널이 필요한 이유
옵셔널은 nil의 가능성을 명시적으로 표현한 것이다.
1) nil 가능성을 문서화 하지 않아도 코드만으로 충분히 표현할 수 있다.
→ 문서/주석 작성 시간을 절약할 수 있다.
2) 전달받은 값이 옵셔널이 아니라면 nil체크를 하지 않더라도 안심하고 사용할 수 있다.
→ 효율적인 코딩을 할 수 있다.
→ 예외 상황을 최소화하는 안전한 코딩이다.
예시
// someOptionalParam can be nil
func someFunction(someOptionalParam: Int?) {
// ...
}
// someParam must not be nil
func someFunction(someParam: Int) {
// ...
}
someFunction(someOptionalParam: nil) // 오류 발생 안함
someFunction(someParam: nil) // 컴파일 오류 발생
옵셔널은 열거형과 제너럴의 합작품
코드에서의 옵셔널 정의
enum Optional<Wrapped> : ExpressibleByNilLiteral {
case none
case some(Wrapped)
}
정식 표현
let optionalValue: Optional<Int> = nil
축약 표현
let optionalValue: Int? = nil
옵셔널의 표현법
! 표현법(Implicity Unwrapped Optional - 암시적 추출 옵셔널)
var optionalValue: Int! = 100
switch optionalValue {
case .none:
print("This Optional variable is nil")
case .some(let value):
print("Value is \(value)")
}
기존 변수처럼 사용할 수 있다.
optionalValue = optionallValue + 1
nil을 할당할 수 있다.
optionalValue = nil
다만, 잘못된 접근으로 인한 런타임 오류가 발생할 수 있다.
optionalValue = optionalValue + 1
이 경우에는 optionalValue가 nil로 할당되어 있지 않기 때문에 1을 더하면 오류가 발생한다.
? 표현법(일반적인 Optional)
var optionalValue: Int? = 100
switch optionalValue {
case .none:
print("This Optional variable is nil")
case .some(let value):
print("Value is \(value)")
}
마찬가지로 nil을 할당할 수 있지만
optionalValue = nil
기존 변수처럼 사용할 수 없다 (옵셔널과 일반 값은 다른 타입이기 때문에 연산이 불가하다.)
optionalValue = optionalValue + 1
©️NAVER Boostcourse. All Rights Reserved.
'앱 개발 > IOS' 카테고리의 다른 글
[IOS 프로그래밍을 위한 스위프트 기초] Quiz 1-1 스위프트 기초개념 퀴즈 (0) | 2024.03.01 |
---|---|
[IOS 프로그래밍을 위한 스위프트 기초] 1단원 12. 옵셔널 추출 (0) | 2024.03.01 |
[IOS 프로그래밍을 위한 스위프트 기초] 1단원 10. 반복문 (0) | 2024.02.29 |
[IOS 프로그래밍을 위한 스위프트 기초] 1단원 09. 조건문 (0) | 2024.02.29 |
[IOS 프로그래밍을 위한 스위프트 기초] 1단원 08. 함수 고급 (1) | 2024.02.29 |