티스토리 뷰

[옵셔널 체이닝]


- 옵셔널에 속해 있는 nil일지도 모르는 프로퍼티, 메서드 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정

- 옵셔널을 반복 사용하여 옵셔널이 서로 꼬리를 물고 있는 모양이므로 옵셔널 체이닝이라고 부름

- 중첩된 옵셔널 중 하나라도 값이 존재하지 않으면 nil을 반환


- 옵셔널 변수나 상수 뒤에 물음표를 붙여 표현

- 결과적으로 nil이 반환될 가능성이 있으므로 옵셔널 체이닝의 결과는 항상 옵셔널임


- 옵셔널 바인딩으로 값을 가져오는 것보다 코드의 양이 훨씬 줄어드는 효과를 가져옴

- 옵셔널 체이닝의 결과도 옵셔널이므로 이를 옵셔널 바인딩하여 사용 가능


- 옵셔널의 서브스크립트를 사용하고자 할 때는 대괄호보다 앞에 물음표를 표기해주어야 함

 : 배열, 딕셔너리에서 값을 가져올 때 해당 변수 이름과 대괄호 사이에 물음표를 표기해주어야 함



[빠른종료]


- guard 키워드를 사용

1
2
3
4
5
guard Bool 타입 값 else{
    예외사항 실행문
    제어문 전환 명령어
}
 
cs



- guard 뒤에 오는 값이 false이면 else 블록을 실행

 : else 블록에는 반드시 자신보다 상위의 코드 블록을 종료하는 코드가 들어가야 함

 : return, break, continue, throw와 같은 제어문 전환 명령, fatalError()와 같은 비반환 함수나 메서드 호출 가능


- 예외사항만을 처리하고 싶을 때 활용하면 if문을 활용할 때보다 훨씬 간결하고 읽기 좋게 코드를 작성할 수 있음


- guard문에서 옵셔널 바인딩된 값을 해당 구문 아래 코드부터 함수 내부의 지역상수처럼 사용할 수 있음

1
2
3
4
5
6
7
8
let number: Int= 10
func function() {
    guard let value = number else { return }
    print(value)
}
function()  //10
 
 
cs


- 쉼표를 사용하여 조건을 추가할 수 있음, 쉼표 대신 &&을 사용 가능


- else문에서 제어문 전환 명령어를 사용해야 하므로 함수나 메서드, 반복문 등 특정 블록 내부에 위치하지 않는다면 사용할 수 없음

'Swift > 야곰의 스위프트' 카테고리의 다른 글

16장 모나드  (0) 2018.02.12
15장 맵, 필터, 리듀스  (0) 2018.02.12
13장 클로저  (0) 2018.02.12
12장 접근제어  (0) 2018.02.05
11장 인스턴스 생성 및 소멸  (0) 2018.02.05
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함