<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Optional Chaining on Kelly Dev</title><link>https://kelly-chui.github.io/tags/optional-chaining/</link><description>Recent content in Optional Chaining on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 20 Jun 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/optional-chaining/index.xml" rel="self" type="application/rss+xml"/><item><title>The Swift Programming Language. Optional Chaining (1)</title><link>https://kelly-chui.github.io/posts/the-swift-programming-language-25-optional-chaining-1/</link><pubDate>Mon, 19 Jun 2023 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/the-swift-programming-language-25-optional-chaining-1/</guid><description>&lt;figure class="theme-image"&gt;
&lt;img
class="theme-image__image theme-image__image--light"
src="https://kelly-chui.github.io/images/assets/swift-logo-light.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;img
class="theme-image__image theme-image__image--dark"
src="https://kelly-chui.github.io/images/assets/swift-logo-dark.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;/figure&gt;
&lt;h2 id="optional-chaining"&gt;Optional Chaining&lt;/h2&gt;
&lt;p&gt;옵셔널 체이닝은 nil일 수도 있는 프로퍼티, 메소드, 서브스크립트를 호출하고 쿼리하는 프로세스이다. 만약 옵셔널에 값이 있다면, 프로퍼티, 메소드, 서브스크립트 호출은 성공하고, nil이라면 프로퍼티, 메소드, 서브스크립트 호출은 nil을 리턴한다. 다수의 쿼리를 하나의 체인으로 엮을 수 있으며, 그중 하나라도 nil값을 가진다면 전체적인 체인은 안전하게 실패한다.&lt;/p&gt;
&lt;h3 id="optional-chaining-as-an-alternative-to-forced-unwrapping"&gt;Optional Chaining as an Alternative to Forced Unwrapping&lt;/h3&gt;
&lt;p&gt;호출하고자 하는 프로퍼티, 메소드, 서브스크립트가 nil이 아니라면, 옵셔널 값 뒤에 물음표(?)를 붙여 옵셔널 체이닝을 특정할 수 있다. 이것은 옵셔널 값 뒤에 느낌표(!)를 붙여 강제 언래핑을 하는 것과 매우 비슷하다. 가장 큰 차이점은, 옵셔널 체이닝은 만약 옵셔널이 nil이라면 안전하게 실패하고, 강제 언래핑은 옵셔널이 nil이면 런타임 에러를 발생시킨다.&lt;/p&gt;</description></item><item><title>The Swift Programming Language. Optional Chaining (2)</title><link>https://kelly-chui.github.io/posts/the-swift-programming-language-26-optional-chaining-2/</link><pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/the-swift-programming-language-26-optional-chaining-2/</guid><description>&lt;figure class="theme-image"&gt;
&lt;img
class="theme-image__image theme-image__image--light"
src="https://kelly-chui.github.io/images/assets/swift-logo-light.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;img
class="theme-image__image theme-image__image--dark"
src="https://kelly-chui.github.io/images/assets/swift-logo-dark.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;/figure&gt;
&lt;h3 id="linking-multiple-levels-of-chaining"&gt;Linking Multiple Levels of Chaining&lt;/h3&gt;
&lt;p&gt;다중 레벨의 옵셔널 체이닝을 서로 연결하여 모델 내부의 프로퍼티, 메소드, 서브스크립트로 깊게 내려갈 수 있다. 하지만 다중 레벨 옵셔널 체이닝은 리턴된 값에 옵셔널 단계를 증가시키지 않는다.(주: 옵셔널 체이닝을 하면 항상 옵셔널 값이 리턴되는데, 옵셔널 체이닝 여러개를 합친다 해서 이중 옵셔널, 삼중 옵셔널이 되지 않는다는 뜻)&lt;/p&gt;
&lt;p&gt;다른말로 설명하자면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;옵셔널이 아닌 값을 검색하려고 시도하면, 옵셔널 체이닝 때문에 옵셔널 값이 된다.&lt;/li&gt;
&lt;li&gt;옵셔널 값을 검색하려고 시도하면, 체이닝 때문에 옵셔널이 추가되지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그러므로:&lt;/p&gt;</description></item></channel></rss>