CHAPTER 14 옵셔널 체이닝과 빠른종료
__14.1 옵셔널 체이닝
옵셔널에 속해 있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정
중첩된 옵셔널 중 하나라도 값이 존재하지 않는다면 결과적으로 nil을 반환
결과적으로 nil이 반환될 가능성이 있으므로 옵셔널 체이닝의 반환된 값은 항상 옵셔널
느낌표(!)
값을 강제 추출하기 때문에 옵셔널에 값이 없다면 런타임 오류가 발생
옵셔널에서 값을 강제 추출해 반환하기 때문에 반환 값이 옵셔널이 아니라는 점
옵셔널 체이닝의 결괏값은 옵셔널 값이기 때문에 옵셔널 바인딩과 결합할 수 있는 것
옵셔널 체이닝을 통해 값을 받아오기만 하는 것이 아니라 반대로 값을 할당
yahoo.address?.building?.room?.number = 505
만약 메서드의 반환 타입이 옵셔널이라면 이 또한 옵셔널 체인에서 사용 가능
yahoo.address?.fullAddress()?.isEmpty
옵셔널의 서브스크립트를 사용하고자 할 때는 대괄호([])보다 앞에 물음표(?)를 표기
__14.2 빠른종료
guard 구문의 옵셔널 바인딩 활용
옵셔널 바인딩의 역할
guard 뒤에 따라오는 옵셔널 바인딩 표현에서 옵셔널의 값이 있는 상태라면 guard 구문에서 옵셔널 바인딩된 상수를 guard 구문이 실행된 아래 코드부터 함수 내부의 지역상수처럼 사용
guard 구문에 구체적인 조건을 추가
쉼표(,)로 추가조건을 나열
추가된 조건은 Bool 타입 값
쉼표로 추가된 조건은 AND 논리연산과 같은 결과
guard 구문이 사용될 수 없는 경우
자신을 감싸는 코드 블록, 즉 return, break, continue, throw 등의 제어문 전환 명령어를 쓸 수 없는 상황이라면 사용이 불가능
함수나 메서드, 반복문 등 특정 블록 내부에 위치하지 않는다면 사용이 제한
참고
야곰의 스위프트 프로그래밍 https://book.naver.com/bookdb/book_detail.nhn?bid=12571019
댓글