Swift에서는 변수에 값이 없다는 것을 표기하기 위한 방법이 존재하는데, 이걸 optional이라고 한다.
변수를 사용하다 보면 아예 값이 없는 경우가 필요할 때가 있고, 이게 0으로 표현하긴 부족할 때가 있다.
이럴 때 optional을 통해 nil이란 값을 넣어준다..
선언은 다음과 같이 한다.
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을 출력하긴 하더라..