Swift를 배우다 보면 변수를 선언하거나 타입 뒤에 ?가 붙어있는걸 볼 수 있다.
let name:String?
Optinal의 정의 : 'nil'이라는 값을 가질 수 있으면 Optinal Type이고, 이 Optinal Type을 선언할 땐 타입 옆에 ?을 붙인다.
여기서 nil은 값이 없다는 것을 의미한다.
예를 들어 값에 접근할때 존재하지 않는 값에 접근을 하면 앱을 Crash 하는것이 아닌 nil을 return 한다.
결국 Swift는 안정성에 중점을 둔 언어라는것을 알게되었다!
nil값을 저장할 수 있는건 Optinal Type뿐이며, 이것을 구분짓기 위해서는
Non Optinal Type과 Optinal Type을 알아야한다.
우리가 일반적으로 변수를 선언할때는 이렇게 선언한다.
var name : String
name = "Blanky"
이렇게 선언된 변수는 Non Optinal Typed이고, nil으로 값을 지정할 수는 없다.
하지만 이렇게 선언하면?
var name : String?
name = nil
String Type에 ?를 붙이면 Optinal Type이 되어 nil으로 값을 지정할 수 있게 된다.
이 방법을 통해 선언과 동시에 초기화 시킬수도 있다.
let a : Int? = nil
let b = a
nil의 자료형이 어떤것인지 궁금해 찾아보게되었는데, 말 그대로 값이 존재하지 않는것이고, 자료형을 유추할 수 없다.