Safety를 강조하는 Swift에서 null(nil)을 다루는 방법.
Optional 이라는 Type을 통해 nullable을 결정.
타언어들과 비교해서 optional이란 타입만 nil을 가질 수 있게 되어,
컴파일 단계에서 nil에 대한 예외처리가 강제된다.
null point exeption이라는 문제로부터 조금 더 안전할 수 있다.
//아래와 같이 Int type은 nil이 될 수 없다
//non-optional
var value: Int
value = nil //error
//optional
//?를 붙여 Optional<Int>라는 Int와는 다른 타입의 property가 된다
var value: Int?
value = nil //ok
Optional type인 값에서 non-optional 값을 얻을 수 있는 방법.
Swift만 가지고 있는 특이한 구문.
var firstValue: Int? = 20
var secondValue: Int? = 100
if let first = firstValue {
print(first) //print 20
print(firstValue) //print Optional<20>
} else {
//nil일 경우에 로직
}
//2개 이상의 옵셔널 바인딩도 가능
if let first = firstValue,
let second = secondValue {
print(first + second)
}
//non-optional 값을 사용하지 않을 경우
//_로 생략가능
if let _ = firstValue {
}
Class First{
var second: Second?
}
Class Second{
var third: Int?
}
var f = Frist()
//Binding만 사용
if let s = f.second,
let t = s.third {
}
//Optional Chaining
//Optinal Binding만 사용한 케이스보다 훨씬 짧고 직관적인 코드 작성이 가능.
if let t = f.second?.third {
//한줄로 옵셔널 바인딩
}
강제적으로 Optional type을 non-optional type으로 변경시키는 구문.
만약 nil이 할당된다면 runtime error 가 발생한다.
대부분의 객체나 값은 안전하게 optional로 다루는게 권장하는 방법이나
간혹 몇몇 군데에서 꼭 non-optional type이 필요한 경우에 사용된다.
var number1:Int? = 20
var number2:Int = 100
let sum = number1! + number1!
number1 = nil
let minus = number1! - number2! //runtime error
#학습에 대한 내용으로 틀린 내용이 있을 수 있습니다.
#댓글로 남겨주시면 더 좋은 게시글로 수정하도록 하겠습니다.