์ต์ ๋์ '์ ํ์ ์ธ', ์ฆ ๊ฐ์ด '์์ ์๋, ์์ ์๋ ์์'์ ๋ํ๋ด๋ ํํ์ด๋ค. ์ด๋ '๋ณ์๋ ์์ ๋ฑ์ ๊ผญ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์๋ค', ์ฆ, '๋ณ์ ๋๋ ์์์ ๊ฐ์ด nil์ผ ์๋ ์๋ค๋ ๊ฒ'์ ์๋ฏธํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ต์ ๋์ด๋ผ๋ ํํ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น?
์ฒซ๋ฒ์งธ myName ๋ณ์์์๋ ๊ฐ์ด ์์ ์๋ ์์ ์๋ ์๋ค๋ ๊ฐ์ ์ผ๋ก chanmi๋ผ๋ ๊ฐ์ด ์์์ผ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋จ์ง ์๊ณ ์ถ๋ ฅ๋๋ค. ํ์ง๋ง myName ๋ณ์์ nil๊ฐ์ ํ ๋นํด ์ค ๊ฒฝ์ฐ ์ถ๋ ฅ ํ์๋ nil ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
var myName: Optional< String >
์ต์ ๋์ ํํํด ์ค ๋, ์ด๋ฐ ์์ผ๋ก ํํํด ์ค์๋ ์์ง๋ง ๋ฌผ์ํ๋ฅผ ๋ถ์ฌ ์ฃผ๋ ๊ฒ์ด ์กฐ๊ธ ๋ ํธํ๊ณ ์ฝ๋ค.
์ต์ ๋์ ๋๋ผ์ด ํน์ง์ ์ด๊ฑฐํ์ผ๋ก ๊ตฌํ๋์ด ์๋ค๋ ์ ์ด๋ค. switch๋ฌธ์ ํตํด ์์๋ณด์.
nil๊ฐ์ผ ๋๋ none ์ผ์ด์ค๊ฐ ๋ ๊ฒ์ด๊ณ , ๊ฐ์ด ์กด์ฌํ ๋๋ some ์ผ์ด์ค๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
์ต์ ๋์ ๊ฐ์ ์ต์ ๋์ด ์๋ ๊ฐ์ผ๋ก ์ถ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
if๋ฌธ์ ์ฌ์ฉํ์ฌ ์กฐ๊ธ ๋ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ณ (๋ค์ ๋์ฌ ์ต์ ๋ ๋ฐ์ธ๋ฉ), myName ๋ณ์ ๋ค์ !๋ฅผ ๋ถ์ฌ ์ต์ ๋ ๊ฐ์ ์ถ์ถ์ ํ์๋ค. ์ค๋ฅ ๋ฐ์์ด ๋๊ธฐ ๋๋ฌธ์ ์ต์ ๋ ๊ฐ์ ์ถ์ถ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋๋ก ์ง์ํ๋ ๊ฒ์ด ์ข๋ค.
if ๋๋ while ๊ตฌ๋ฌธ ๋ฑ๊ณผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ์์ ์ฝ๋๋ if ๊ตฌ๋ฌธ์ ํตํด myName์ด nil์ธ์ง ๋จผ์ ํ์ธํ๋ ๊ฒ์ด๋ค. ์ฆ, ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ์ต์ ๋์ ๊ฐ์ด ์๋์ง ํ์ธํ ๋ ์ฌ์ฉํ๋ค. ์ฝ๋์ ๊ฐ์ด if ๊ตฌ๋ฌธ์ ์คํํ๋ ๋ธ๋ก ์์ชฝ์์๋ง name์ด๋ผ๋ ์์ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ฌผ๋ก , if ๋ธ๋ก๋ฐ์์๋ ์ฌ์ฉํ ์ ์๋ค. ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ํน์ง์ ์ผํ๋ฅผ ์ฌ์ฉํด ํ๋ฒ์ ์ฌ๋ฌ ์ต์ ๋์ ๊ฐ์ ์ถ์ถํ ์๋ ์๋ค๋ ๊ฒ์ด๋ค.
nil๊ฐ์ ํ ๋นํ๊ณ ์ถ์ง๋ง, ์ต์ ๋ ๋ฐ์ธ๋ฉ์ผ๋ก ๋งค๋ฒ ๊ฐ์ ์ถ์ถํ๊ธฐ ๊ท์ฐฎ๊ฑฐ๋, ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ๋ ํ์ ์ด ๋ค ๋ ์ฌ์ฉํ๋ค. ์๋๋ ์ต์ ๋์ ํ์ํ๊ณ ์ ํ๋ ํ์ ๋ค์ ?๋ฅผ ์ฌ์ฉํ์ง๋ง, ์์์ ์ถ์ถ ์ต์ ๋์ ํ์ ๋ค์ !๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ํ๊ฐ์ง ์ฃผ์ํด์ผ ํ ์ ์ nil์ด ํ ๋น๋์ด ์๋ ๊ฐ์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.