Swift에서는 변수에 값이 없다는 것을 표기하기 위한 방법이 존재하는데, 이걸 optional이라고 한다.

변수를 사용하다 보면 아예 값이 없는 경우가 필요할 때가 있고, 이게 0으로 표현하긴 부족할 때가 있다.

이럴 때 optional을 통해 nil이란 값을 넣어준다..

1. Optional이란?

선언은 다음과 같이 한다.

var iAmOptionalInteger: Int?

자료형 뒤에 ?를 붙여주면 된다! 귀엽다.

초기화해주지 않아도 nil로 초기화된다.

var iAmOptionalInteger: Int? = nil

두 코드가 같다고 봐도 된다.

이런 변수들은 그냥 쓰면 에러가 나기 때문에, 옵셔널 추출이란 걸 해줘야 쓸 수 있다.

var iAmOptionalInteger: Int? = nil
var giveMeAValue: Int

giveMeAValue = iAmOptionalInteger // 여기서 에러가 난다.

왜냐? giveMeAValue라는 변수는 nil을 담을 수 없기 때문이다.. 근데 iAmOptionalInteger변수가 nil이 아니고 값을 가지고 있어도 에러는 난다.

value of optional type 'Int?' must be unwrapped to a value of type 'Int' giveMeAValue = iAmOptionalInteger

replit에서 실행시켜봤을때 대충 이런 에러가 난다. iAmOptionalInteger를 nil이 아닌 값으로 초기화해줘도 같다.

결국 옵셔널 변수를 사용하려면 unwrap이라는 것을 해줘야 하나보다.

호기심이 동해서

var iAmOptionalInteger: Int?
var giveMeAValue: Int? = 1

giveMeAValue = iAmOptionalInteger

print(giveMeAValue)

이런 것도 실행해봤는데, 경고를 잔뜩 띄우지만 nil을 출력하긴 하더라..