🌟 Swift가 갖는 Optional이라는 개념은 변수의 값이 nil일 수 있다는 것을 표현. 반대로 Optional이 아니라면(non-optional) 해당 값은 nil이 될 수 없음을 의미.
var name: String?
var name: String // 컴파일에러
var name = nil // 컴파일에러
🌟 Swift가 기본적으로 non-optional을 지원. nil에 대한 컴파일 에러를 통해 개발자는 nil에 대해 명확한 예외처리가 강제되며, 런타임에 nil로 인한 문제를 컴파일 단계에서 예방할 수 있음
var number1:Int? = 20
var number2:Int = 100
number1 + number2
Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?
unwrapping 또는 binding
과정이 필요var number1:Int? = 20
var number2:Int = 100
if number1 {
let sum = number1! + number2
}
var number1:Int? = 20
var number2:Int = 100
if let nonOptionalNumber1 = number1 {
let sum = nonOptionalNumber1 + number2
}
여러 객체를 혼합해서 사용하다보면 Optional끼리의 연산이 필요한 경우가 있음. 이 경우에 객체마다 옵셔널 바인딩을 사용하게 되면, if문이 복잡해짐
Optional Chaining을 통해 간단하게 Optional 예외처리
swift에서 . 을 통해 클래스의 프로퍼티에 접근이 가능한 점 이용
class A {
var b:B?
}
class B {
var c:String?
}
var a:A = A()
if a.b?.c {
}