[Swift] 스위프트 옵셔널 타입

chaaansooo·2022년 3월 4일
0

Swift 문법

목록 보기
1/4
post-thumbnail

옵셔널 타입은 변수 또는 상수에 값이 할당되지 않은 상황을 처리하기 위해 안전하고 일관된 접근 방식을 제공하기 위한 장치이다.
스위프트에서 값을 할당하지 않거나, nil을 할당할 수 있는 것은 옵셔널 타입 뿐이다.

사용방법

변수를 선언할 때, 데이터 타입 선언 다음에 ? 를 붙여서 옵셔널이 되게 한다.

var a: Int?

다음과 같이 a라는 변수를 선언했을 때 어떠한 값도 설정되지 않은 옵셔널은 nil을 값으로 갖는다.

강제 언래핑(forced unwrapping)

옵셔널에 값이 할당되었다면 해당 값이 옵셔널 내에서 '래핑되었다(wrapped)'라고 말한다.
래핑된 값을 그대로 사용하게 되면 오류가 나게 되는데 이를 방지하기 위해서 강제 언래핑이나 옵셔널 바인딩이라는 방법으로 값을 꺼내서 꺼내어 사용해야한다.

var a: Int?
a = 100
print(a)
// 에러

print(a!)
//100

옵셔널 바인딩(optional binding)

앞서 말한 것처럼 값을 꺼내서 사용하기 위한 두번째 방법이다.
if let 또는 if var 구문이 사용된다.

if let temp = a{
	print(temp)
}

if var temp = a{
	print(temp)
}

여기에서 선언된 상수 또는 변수는 if 구문 안에서만 유효한 상수이다. 따라서 다른 if문에서 같은 변수 또는 상수 이름을 사용해도 괜찮다.
또한, 위와 같은 이유로 옵셔널로 할당된 동일한 이름을 사용해도 충돌이 나지 않는다.

if let a = a{
	print(a)
}

if var a = a{
	print(a)
}

if let 구문을 사용할 때 하나 이상의 변수를 사용할 때와 조건문을 포함할 때도 사용할 수 있다.

if let a = a, let b = b, let c = c ..., <조건식>{

선언부에서 강제 언래핑이 되도록 선언하기

옵셔널을 선언할 때 ? 대신 !를 사용하면 강제적으로 언재필할 수 있다.

var a: Int!

a = 100

if a != nil{
	print(a)
} else {
	print("value is nil")
}
profile
악으로 깡으로 버티기

0개의 댓글