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으로 대체하여 사용하겠다는 뜻

댓글을 작성해보세요.

채널톡 아이콘