티스토리 뷰
안녕하세요! Swallow입니다!
이번 포스팅은 Optioanl Unwrapped 방법 중 비교적 간단한
⭐️ Nil-Coalescing ⭐️
관한 글입니다!
항상 어떠한 조언, 충고 환영입니다!
시작하기에 앞서 이 글은
앨런 Swift 문법 마스터 스쿨 강의와 야곰님의 스위프트 프로그래밍 책을
공부하고 참고하여 작성하였습니다!
그럼 시작하겠습니다!
닐 코얼레싱(Nil-Coalescing)이란?
사전적 의미로는
(더 큰 덩어리로) 합치다 라는 의미입니다!
Nil-Coalescing은 Optional Unwrapped 방법 중에서 비교적 간단합니다!
이전 포스팅에서 마지막 부분에서 조금
말씀드렸다시피, 기본값을 제공해주는 연산자입니다!
직접적으로 값을 벗겨내서 사용하는 게 아닌,
기본값을 제시해서 옵셔널을 벗겨내는 방법입니다!
Nil-Coalescing은 어떻게 사용방법은
??
물음표 두 개입니다!
옵셔널 표현식 뒤에 ??를 붙이고 그 뒤에 기본값을 제시하면 됩니다!
옵셔널 표현식 ?? 기본값
이런 설명보다는 바로 예시를 보시는 게 좋겠죠?
var dormitory: String? = "Gryffindor"
var harry = dormitory ?? "Slytherin"
위의 예시를 분석해 보자면
dormitory변수가 String? 타입으로 선언되어 있고, "Gryffindor"가 할당되어 있습니다
그리고 밑에 줄에서 Nil-Coalescing이 등장합니다!
harry변수에 할당을 하는데, 무엇을 할당을 하느냐!
dormitory변수에 값이 존재한다면
String? 타입인 "Gryffindor"의 옵셔널을 벗겨낸 후 harry에 할당합니다!
dormitory변수가 nil이라면
?? 뒤에 기본값으로 제시해준 "Slytherin"을 할당합니다!
이해가 조금 되시나요? 😀
쉬운 이해를 위해서 한 가지 예시를 더 보겠습니다!
var name: String? = "swallow"
var changeName = "안녕하세요 " + (name ?? "포켓몬스터 테일로") + "입니다!"
print(changeName) // 안녕하세요 swallow입니다!
name변수에 String? 타입으로 "swallow"가 할당되어 있습니다
밑에 줄에서 다시 Nil-Coalescing이 등장합니다!
name변수에 값이 존재한다면 Optional("swallow")에서
내부에 있는 값을 자동으로 벗겨서
즉, "swallow"만 꺼내서
changeName변수에 할당을 해주기 때문에
print(changeName)을 실행하면
안녕하세요 swallow입니다! 가 출력이 됩니다!
name변수에 nil이 존재한다면
기본값으로 제시한 "포켓몬스터 테일로"가 할당이 되어서
print(changeName)을 실행하면
안녕하세요 포켓몬스터 테일로입니다! 가 출력이 됩니다!
어때요? 쉽죠?
그런데 Nil-Coalescing을 사용 시에 주의할 점과
한 가지 알아두면 좋은 점이 있습니다!
우선 주의할 점은
옵셔널로 정의한 타입과
기본값으로 제시한 타입이 동일해야 한다는 점입니다!
동일해야 한다는 말이 Optional까지 동일해야 한다는 말이 아니고,
단순히 String? 타입 일 때, 기본값도 String 타입이어야 한다는 말입니다!
즉, String? 타입으로 선언을 했을 때
기본값으로 Int, Double 타입 등을 줄 수 없고
오직 같은 타입을 주어야 합니다!
그리고 마지막으로
알아두시면 좋은 점이
var dormitory: String? = "Gryffindor"
var harry = dormitory ?? "Slytherin"
위의 예시를 다시 보시면
과연 변수 harry의 타입은 무엇일까요?
바로!!
String 타입입니다!
오잉?
왜 String? 타입도 아니고 String 타입이지?라고 생각하실 수 있어요!
왜냐하면 Nil-Coalescing을 사용하면
옵셔널로 선언된 타입에 값이 존재하면,
옵셔널 값을 벗긴 후 할당을 하고
nil이 존재하면 기본값을 제공을 했기에
절대 nil이 할당될 일이 없습니다!
그렇기 때문에 옵셔널로 선언이 되질 않아요! 😁
이번 포스팅에서는 Optional Unwrapped 방법 중
닐 코얼레싱(Nil-Coalescing)에 대해서 알아보았는데요!
앞에서 배우신 내용보다는 비교적 간단합니다!
다음 포스팅에서는
⭐️ IUO(암시적 추출)⭐️
알아보겠습니다!
감사합니다!
항상 어떠한 피드백 환영입니다!
'Swift' 카테고리의 다른 글
열거형(Enumeration) 정복하기 - 1장 (0) | 2022.05.27 |
---|---|
옵셔널(Optiona) 정복하기 - 5장 (0) | 2022.05.12 |
옵셔널(Optional) 정복하기 - 3장 (0) | 2022.05.09 |
옵셔널(Optional) 정복하기 - 2장 (0) | 2022.05.08 |
옵셔널(Optional) 정복하기 - 1장 (0) | 2022.05.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- 옵셔널 추출
- 프로퍼티 옵저버
- Swift Instance
- 열거형 case 패턴
- 원시값
- Instance Methods
- Swift Methods
- 옵셔널 바인딩
- optional
- 저장 타입 속성
- 열거형
- 저장 타입 프로퍼티
- 연관값
- optional unwrapped
- 스위프트 메서드
- 서브스크립트
- 클래스 구조체 차이
- Optional pattern
- swift class
- Type Methods
- 속성 감시자
- 옵셔널
- 스위프트
- SWiFT
- 옵셔널 패턴
- Property Observers
- optional unwrapping
- swift struct
- Swift enum
- enum