슬슬 기본 연산자 파트가 마무리 되어간다.
달에 한두개씩 올리던 기본서는 기본연산자 파트에서 그만두게 되고,
이후에는 기본 연산자가 아닌 다른 내용으로 짬짬히 올리게 될듯하다.
우선 닐 코레싱? 뭐라 읽어야할지도 난감한 파트가 왔다.
내 짐작컨데 옵셔널의 해제를 해보는 파트인듯해서 우선 옵셔널에대해 예시를 들것이다.
내가 학부때 공부할때만 해도 자바에 옵셔널에대해 들어본적이 없었는데 요즘 뭔가 생긴듯하여
스위프트만의 특징이다! 라고 말할 수 는 없게되어 아쉽다.
이 옵셔널은 값의 존재 유무를 모를때 사용 할 수 있는 하나의 안전장치이다.
일반적인 경우에서 어떠한 변수 a값을 사용하려고 할때 이 a값에 아무런 값이 설정되어 있지않다면 아마 nullpoter error가 뜨게 될것이다.
비어 있는 값을 참조했기에 진행할 수 없다고 말하는것인데
이러한 사태에 대해 안전장치로 사용할 수 있는것이 바로 옵셔널이다.
형식은 매우 단순하다
형식)
var 변수이름:변수타입?
위와같이 타입에 물음표를 붙이면된다.
이 타입인건가 하며 묻는듣한 모습에 바로 이해가 갈 것이라 생각된다.
이 옵셔널에 예시를하나 들어보자면
var name : String? 이 있겠다
참고로 이렇게 바로 선언하면 name값에는 nil 값이 들어가게 된다.
여기서 nil은 아무런 값이 없다는 뜻이다.
이제 값을 넣고 출력해보면 아래와같이 나온다.
예시1)
var name:String? = "wiwi"
print(name)
결과:
Optional("wiwi")
값이 wiwi지만 겉에 Optional()이라고 붙어있는게 바로 물음표의 역할이다.
옵셔널로 나오기에 바로 이값을 사용할 수는 없다.
그래서 이 옵셔널에서 값을 추출해줘야한다.
이옵셔널에 대해 이야기한적이 있나 살펴보지 3편에서 다뤘었다.
3편의8항 옵셔널 편에서
값을 추출하기위해 느낌표, !를 붙인다고 적었다.
실제로 위 예시1)을 느낌표를 붙이고 출력하면 아래와같이 무사히 값이 나온다.
예시2)
var name:String? = "wiwi"
print(name!)
결과:
wiwi
이러한 옵셔널을 다루기위해선 위의 ! 와 같이 값을 추출해야하는데
이럴때 값을 더 안전하게 추출하는 연산자가 이 nil-coalescing 연사자로 추측된다.
위의 name을 이전편 3항연산자를 이용해서 풀어보자면
(name != nil ? name! : "wiwi2")
로 표현할 수 있겠는데
이는 name의 값이 nil 이 아닐경우 name을 ! 를 사용해서 바로 값을 추출한다는것이고
만약 값이 없을경우 wiwi2를 반환한다는 간략한 식이다.
이를 더 간략히 이번 편의 주제인 nil-coalescing 연산자를 이용하자면 ( 형태: ?? )
name ?? "wiwi2" 가 되겠다
코드로 돌려보자면 아래와같다.
예시3)
var name:String?
print(name ?? "wiwi2")
name = "wiwi"
print(name ?? "wiwi2")
결과:
wiwi2
wiwi
라인 1의 name은 값을 할당하지 않았기에 print시에 ?? 를 통해 wiwi2값이 나오게되고
라인 4의 name은 wiwi값을 할당한 상태이기에
라인 5의 print에선 wiwi값이 나오게된다.
'강의를해보고싶었어요 > [강좌] 언어 기본서' 카테고리의 다른 글
[스위프트 기본] 10. 논리 연산자 (0) | 2021.05.07 |
---|---|
[스위프트 기본] 9. 범위 연산자 (0) | 2021.05.07 |
[스위프트 기본] 7. 3항 연산자 (0) | 2021.04.27 |
[스위프트 기본] 6. 조건문과 반복문 (0) | 2021.04.26 |
[스위프트 기본] 5. 비교 연산자 (0) | 2021.03.04 |