옵셔널 체이닝이란?
옵셔널 체이닝은 "프로퍼티, 메서드, 서브스크립션 "에 값이 있다면 값을 반환, 없다면 nil을 반환한다.
( 옵셔널이 꼬리를 물고있는 모양 )
- 옵셔널에 값이 없다면 런타임 Error발생
- 반환 값이 옵셔널 타입이 아님!
43번 줄과 같은 코드에서 옵셔널 체이닝이 진행되며, nil을 하나라도 마주치는 순간 다음 체인을 확인하지 않고 그대로 nil이 반환된다.
옵셔널 바인딩만을 사용하면, 47~54줄과 같이 코드가 매우 길어지며 가독성이 떨어진다.
옵셔널 체이닝을 함께 사용하면, 간결하고 가독성 좋은 코드를 작성할 수 있다.
체이닝 도중 nil값을 마주치면 할당이 되지않고 끝나게 된다!
아래처럼, 배열의 타입이 옵셔널인 경우, 접근할 때, []보다 앞쪽에 ?를 붙여줘야한다.
하지만 21~ 코드처럼 옵셔널 값을 갖는 배열인 경우는 직관적으로 드는 생각처럼 [] 뒷쪽에 ?를 붙여주면 된다.
- if문처럼 Bool값을 기준으로 동작.
- 항상 else구문이 따라와야함
- guard 뒤의 Bool값이 true인 경우 else뒷쪽의 코드가 계속 실행되고, false인 경우, else문이 실행된다.
- else문 안에서는 return, break, continue, throw, fatalError()와 같은 제어문 전환 명령이 사용되어야한다!
- return, break, continue, throw등 제어문 전환 명령어를 쓸 수 없는 상황이라면, 사용이 불가능하다!!!
- guard let 을 사용하여 옵셔널 바인딩 된 상수는 해당 블록에서 지역상수로 사용될 수 있다!!
-( if let을 통해 바인딩 된 상수는 if문 내에서만 사용가능)
- ,를 통해 여러 조건을 나열할 수 있다. ( 일반 Bool 조건과 옵셔널 바인딩 모두 가능 ) -> , 대신 &&로 써도 됨. 같은 의미이다.
Swift언어08 - 모나드 ( equals 함수형 패러다임 ) (0) | 2022.10.06 |
---|---|
Swift언어08 - 맵.필터.리듀스 (0) | 2022.10.05 |
Swift언어6 - 함수형 프로그래밍_클로저 (0) | 2022.10.01 |
Swift언어 복습노트 5 - 구조체와 클래스 그리고 instance(작성중) (0) | 2022.09.10 |
Swift언어 복습노트 4 - 함수와 Optional (1) | 2022.09.10 |