오늘은 swift를 공부하면서 맨처음 으엥..? 소리가 나오게 만들었던 Optional에 대해 정리할거에요.
옵셔널은 값이 없음을 표현하는 형식이에요.
옵셔널까지 안다면 nil은 당연히 아실텐데, nil은 값이 없음을 나타내는 특별한 값이고,
요거, nil을 저장해서 표현해줄 수 있도록 해주는 형식이 옵셔널(Optioanl)입니다!
이런 옵셔널을 사용하는 방법은 type 뒤에 ?(물음표)를 붙여서 사용할 수 있어요!
바로 non optional 과 optional을 비교해서 확인해 볼게요.
let str: String = "Linda" // non optional str
let optionalStr: String? = nil // optional optionalStr
String 타입으로 str를 선언해서 Linda라는 값을 저장했구요, 값이 있다고 명시하고 선언한 non optional str 입니다.
밑에는 optional String 타입으로 optinalStr를 선언하고, nil을 사용해서 값을 비워 놓았어요.
즉, String 타입으로 값을 선언했지만, 값을 비워놓을 수 있다고 해서 nil을 사용할 수 있는것이죠!
그럼 이런 optional을 출력하면 어떻게 출력될까여 ?
경고 표시는 무시하고 보면, num이라는 optional int를 선언하고 nil로 값을 비워 놓았어요.
그런 num을 출력하면 nil이 출력이 되는건 당연하겠죵
그럼 이런 optional int 변수에 123이라는 숫자를 저장하고 출력을 하면 Optional(123)이라고 출력이 됩니당...
그러니까, optional로 선언된 변수를 print로 출력하면 앞에 optional이 붙여서 출력 되는거랍니다!
다음 설명을 위해서 쉽게 말하자면 변수가 optional로 포장되어(wrapping) 있다고 생각하면 될것 같아요!
그럼 진짜 값을 추출하기 위해서는 어떻게 해야할까욤,,
값 추출, 바로 unwrapping을 통해서 진짜 값을 추출할 수 있어요. 왜 위에서 값을 wrapping한다고 표현했는지 알겠죠?
optional로 선언한 변수는 warpping되어 있고, unwrapping을 통해서 요 값을 추출할 수 있습니다.
이런 unwrapping의 방법은 forced unwrapping 이 있어요. 이름 그대로 강제로 값을 추출한다는 의미에요.
Forced Unwrapping
이런 강제 추출은 !를 붙여서 추출할 수 있는 방법입니다.
바로 예시부터 확인해 볼게요.
optional String 타입으로 test라는 변수를 생성하고 "옵셔널로 선언한 test 변수"라는 값을 저장해 놓았어요.
그런 optional string test를 출력하면 optional("옵셔널로 선언한 test 변수")가 출력되는데
여기에 ! 를 붙여서 출력하면 옵셔널로 선언한 test 변수만 출력이 되는 걸 확인할 수 있어요.
오, 좋은데?라고 생각할 수 있겠지만,
!는, forced unwrapping은 값이 있는지 없는지 확인하지 않고 무조건 강제적으로 추출하는 방법이에요.
그래서 만약에 test 변수가 nil이 었어도 추출을 하려고 합니다.
그러면 어떻게 되냐면 Fatual Error가 발생해요!
때문에 주로 사요하지 않는 추출 방법입니다.
더 좋은 방법은 다음 게시물에서 정리해볼게요!
여기서는 optional, nil이 무엇이고 forced unwrapping이라는게 있다~ 정도만 알면 될것 같습니다.
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법] Property를 알아보자 (0) | 2023.06.16 |
---|---|
[Swift 기초문법] Closure 를 알아보자 (2) | 2023.06.16 |
[Swift 기초문법] Optional Chaining에 대해 알아보자 (2) | 2023.03.02 |
[Swift 기초문법] Optional Binding을 알아보자 (3) | 2023.02.26 |
[Swift 기초문법] Guard문을 알아보자 (0) | 2023.02.08 |