Optional(옵셔널)

박찬우·2023년 7월 17일
1

optional

값이 없을 수 있는 상황에서 사용한다.
? 로 나타낸다.

var serverStatus: Int? = 404

옵셔널은 두가지 가능성을 갖는다
1. 값이 있고 래핑된 값을 언래핑하여 해당 값에 접근할 수 있다.
2. 값이 없다.

옵셔널 바인딩

옵셔널 값이 빈값인지 확인후 존재하면 그 값을 대입시키는 과정을 의미한다.
강제 언래핑 보다 안전하다.

if 와 guard가 사용 가능하다.

if : if 코드 내에서만 사용이 가능
guard : guard 코드 밖에서도 사용이 가능하다.

강제 언래핑

! 를 이용하여 강제로 옵셔널 값을 추출할 수 있다.
nil이 아닌 것이 확실할 때 사용해야 한다.

var sevenTeen: [Int: String] = [1:"에스쿱스", 2:"정한", 3:"조슈아", 4:"준", 
5:"호시", 6:"원우", 7:"우지", 8:"디에잇", 9:"민규", 10:"도겸", 
11:"승관", 12:"버논", 13:"디노"]

print(sevenTeen[8]) //출력 : Optional("디에잇")
print(sevenTeen[8]!) //출력 : 디에잇

기본값 설정하기

옵셔널 변수읙 값이 nil일 때를 대비하여 기본값을 설정할 수 있다.
이해가 잘 안된다.

옵셔널 체이닝

옵셔널을 연쇄적으로 사용하는 것을 의미한다.
. 을 통해 내부 프로퍼티나 메서드에 연속적으로 접근할 때 옵셔널 값이 있으면 옵셔널 체이닝으로 접근할 수 있다.

struct sevenTeen{
    var name: String
    var address: Address
}

struct Address {
    var city: String
    var street: String
    var detail: String
}

let SCoups: sevenTeen? = sevenTeen(name : "S.Coups", address: Address(city:"서울", street: "신논현로", detail: "100"))

print(SCoups?.address.city) // Optional("서울")

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

좋은 글 잘 읽었습니다, 감사합니다.

답글 달기