์ค์ํํธ ๊ณต๋ถ๋ฅผ ํ๋ค ๋ณด๋ ?, ๊ทธ๋ฆฌ๊ณ ! ์ด๋ฐ ๋ฌธ์ฅ ๋ถํธ๋ค์ด ๋ฑ์ฅํ๋ค.
์ค๋์ ๊ทธ ์ค ?์ ๋ํด ๋จผ์ ์ค๋ช ํด ๋ณด๋ ค ํ๋ค.
๐ ์ต์ ๋
์ค์ํํธ๊ฐ ๊ฐ์ง๋ ๋ํ์ ์ธ ํน์ง์ผ๋ก ์์ ์ฑ์ด ์๋ค. ์ต์ ๋์ ๋ฐ๋ก ์์ ์ฑ์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ!
์ฐ๋ฆฌ๊ฐ String, Int, Double ๋ฑ ์ผ๋ฐ์ ์ธ ํ์ ์ ์ง์ ํ ๋,
์ค์ํํธ์ ํ์ ๋ค์ ๋ชจ๋ nil์ด ๋ถ๊ฐํ๊ฒ ๋์ด์๋ค.
์ฌ๊ธฐ์ ์ ๊น, nil์ด๋?
nil์ '๊ฐ์ด ์์'์ ๋ปํ๋ค. 0๊ณผ๋ ๋ค๋ฅธ ๊ฐ๋ !
์๋ฅผ ๋ค์ด, ๋ฌธ์์ด "์ฌ๊ณผ"๋ ์ ํํ ๊ฐ์ด ์๋ ๊ฒ์ ์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌธ์์ด ""๋ ๊ฐ์ด ์๋ ๊ฒ์ผ๊น?
์๋๋ค. ""๋ ๊ฐ์ด ์๋ ๋ฌธ์์ด์ด๋ฉฐ, ๊ฐ์ด ์๋ ๋ฌธ์์ด์ ๋ฐ๋ก nil์ด๋ค.
(nil์ ๋ํ ์์ธํ ์ค๋ช ์ ์ฌ๊ธฐ๐๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
2021.06.07 - [๐ Swift Note] - [Swift] nil ์ ๋ฆฌ (feat.NULL)
์ต์ ๋์ ์ง์ญํ๋ฉด '์ ํ์ ์ธ'์ด๋ผ๋ ๋ป์ด ๋๋๋ฐ,
๋ง ๊ทธ๋๋ก ๊ฐ์ด ์์ ์๋ ์๊ณ (nil), ์์ ์๋ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ์ต์ ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
๐ nil์ ์ ์ฅํ๊ธฐ ์ํด์๋ ์ต์ ๋ ํ์!
๐ ์ ์ฅ ๊ฐ๋ฅํ ๋ฒ์๊ฐ ๋ค๋ฅด๊ธฐ์ ๋น์ฐํ, ์ต์ ๋์ธ ํ์ ๊ณผ ๊ทธ๋ฅ ํ์ ์ ์์ ๋ค๋ฅธ ํ์ !! (Int! != Int)
var test: Int?
์ด๊ฒ ๋ฐ๋ก ์ต์ ๋์ ์ฌ์ฉ ๋ชจ์ต์ด๋ค.
์๋์์ ์ข ๋ ์์ธํ ๋ณด์.
์์ ๊ฐ์ด ์ต์ ๋์ ์ ์ฉํ ์๋ฃํ์ Optional Type์ด๋ผ๊ณ ํ๊ณ ,
์ ์ฉ๋์ง ์์ ํ์ ์ Non-Optional Type์ด๋ผ๊ณ ํ๋ค.
๐ Non-Optinoal Type
๋ ผ ์ต์ ๋ ํ์ ์ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ณ์๋ ์์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
var test: Int
var test = 1
์ด๋ ๊ฒ!
Type Annotation์ด๋ Type Inference๋ฅผ ์ด์ฉํด์ ๋ณ์๋ ์์๋ฅผ ์ ์ธํ๋ ๋ชจ์ต.
(Type Annotation, Inference์ ๋ํ ๊ธ์ ์ฌ๊ธฐ๐๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
์ด ๋ ผ ์ต์ ๋ ํ์ ์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ๊ฐ์ด ์กด์ฌํด์ผ ํ๊ณ ,
๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ(์ ์ธ๋ง ํด์ฃผ๊ณ ๊ฐ์ ๋์ ํ์ง ์์๊ฑฐ๋ ๋ฑ์ ์ํฉ) ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๐ Optional Type
์ต์ ๋ ํ์ ์ ์์ Type Annotation์ผ๋ก ์ ์ธํ ๋ ผ ์ต์ ๋ ํ์ ์ ?๋ฅผ ์ถ๊ฐํด์ค ๋ชจ์์ด๋ค.
var test: Int?
์ด๋ ๊ฒ! ์๋ฃํ ๋ค์ ?๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ต์ ๋ ํ์ ๋ Type Inference๋ฅผ ์ด์ฉํ ์ ์๋๋ฐ,
var test1: Int? = 1
var test2 = test1
์์ ์ฝ๋๋ test2๋ฅผ ์ต์ ๋๋ก ์ ์ธ๋ test1์ ์ด์ฉํ์ฌ ์ด๊ธฐํํ๋ ๋ชจ์ต์ด๋ค.
์ด๋ ๊ฒ ์ต์ ๋ ์๋ฃํ์ ๋ณ์ํน์ ์์๋ฅผ ์ด์ฉํ๋ฉด ์ต์ ๋๋ก ์ถ๋ก ํ์ฌ ์ง์ ํ ์ ์๋ค.
๐ฅ์ฃผ์ ์ฌํญ ๐ฅ
ํ์ง๋ง Type Inference๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๋์ ์ง์ ํ ๋๋ ์ฃผ์ํ ์ ์ด ์๋ค.
์ฐ๋ฆฌ๊ฐ ํํ Non-Optional Type์ ์ ์ธํ ๋ ํ๋ฏ
var test = nil
์ด๋ ๊ฒ ํด์ฃผ๋ฉด ์๋๋ค๋ ๊ฒ!!!
๊ทธ ์ด์ ๋,
์ด ์ถ๋ก ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ๋ค์ ์ค๋ ๊ฐ๋ง ๋ณด๊ณ ๊ทธ ์๋ฃํ์ ์ ์ถํด์ผ ํ๋๋ฐ
nil์ ๊ทธ์ผ๋ง๋ก '๊ฐ์ด ์์'๋ฟ ์ด๋ค ์๋ฃํ์ธ์ง ์ ์ ์๋ค.
๋ฐ๋ผ์ ์ด๋ ๊ฒ ์ต์ ๋์ ์ง์ ํ๋ ค๊ณ ํ๋ฉด ๋น์ฐํ ์๋ฌ๊ฐ ๋์ฌ ์ ๋ฐ์ ์์!
๐ ์ ๋ฆฌ ๐
์ต์ ๋์ Type Annotation ๋ค์ ?๋ฅผ ๋ถ์์ผ๋ก์จ
์ผ๋ฐ์ ์ธ ์๋ฃํ์ด nil ๊ฐ์ ๊ฐ์ง ์ ์๊ฒ ํด์ค๋ค. (๊ฐ์ด ์์ ์๋, ์์ ์๋!)
์ต์ ๋ ํ์ ๊ณผ ๋ ผ ์ต์ ๋ ํ์ ์ ์์ ๋ค๋ฅธ ํ์ !!!
(์ต์ ๋ ์ถ์ถ์ ๋ํ ๊ธ์ ์ฌ๊ธฐ๐์ ์์ฑํ์ต๋๋ค~!~)
์ฐธ๊ณ
'3๏ธโฃ Swift > Swift ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Type Annotation๊ณผ Type Inference (ํ์ ์ด๋ ธํ ์ด์ ๊ณผ ํ์ ์ถ๋ก ) (2) | 2021.06.11 |
---|---|
[Swift] Int, Int64? (0) | 2021.06.09 |
[Swift] let ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ (์์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ) (2) | 2021.06.09 |
[Swift] ์ค์ํํธ์ ์ธ์ด์ ํน์ฑ (2) | 2021.06.09 |
[Swift] nil ์ ๋ฆฌ (feat.NULL) (4) | 2021.06.07 |
๋๊ธ