23.01.02 학습일기
13. Optional_1
Optional type이란?
값이 있을 수도, 없을 수도 있음. 타입에 ?를 붙임. 모든 타입은 Optional type 가능
값이 없다라는 개념은 - nil로 표현 (null) - 어떤 상태인지 모른다는 뜻
var age: Int? = 100 // 값을 넣어도 되지만
var age1: Int? = nil // 값이 없다. nil을 쓰는 것이 더 맞는 표현. 메모리에 아직 올라가지 않은 상태를 말함
var age2: Int = 0과 다른 의미임!!! 값이 있는 상태
if age1 == nil {
// print("나이가 0살이다") - 틀림
print("나이 값을 확인할 수 없다.)
}
var str1: String = "" // 값이 있음
var str2: String? = nil // 값이 없음
if str2 == nil {
//print("글자 개수가 0개이다") - 틀림
print("글자를 쓰지 않았다. 스트립 값이 어떤 지 모른다)
}
var myfavorite: [String]? // String 타입의 Optional 배열, 초기 값 안 주면 nil로 처리됨
if myfavorite == nil {
// print("내 즐겨찾기 개수가 0개다") - x
print("내 즐겨찾기 개수를 받아오는데 실패했습니다.")
}
14. Optional_2
// unwrapping
// 옵셔널로 래핑(wrap) 되어 있다.
var myAge1: Int = 20
var myAge2: Optional<Int> = 40
var sum = myAge2 + 1 // error. unwrapped 해야 함. 옵셔널이 되는 것이 있고 안 되는 것이 있는데, +는 Optinal로 사용할 수 없는 기능
// force unwrapping (강제로 unwrapping 하는 것, ! 붙이기)
var sum = myAge2! + 1
// 주의 사항
myAge = nil
myAge! // error. 앱이 죽은 상태. 절대 하면 안됨
var sum2 = (myAge1 ?? 0) + 1 // myAge1이 nil일 경우 0으로 대체하여 사용하겠다는 뜻
댓글을 작성해보세요.