[Swift] Optional(์ต์ ๋) ์ ๋ฆฌ
์ค์ํํธ ๊ณต๋ถ๋ฅผ ํ๋ค ๋ณด๋ ?, ๊ทธ๋ฆฌ๊ณ ! ์ด๋ฐ ๋ฌธ์ฅ ๋ถํธ๋ค์ด ๋ฑ์ฅํ๋ค.
์ค๋์ ๊ทธ ์ค ?์ ๋ํด ๋จผ์ ์ค๋ช ํด ๋ณด๋ ค ํ๋ค.
๐ ์ต์ ๋
์ค์ํํธ๊ฐ ๊ฐ์ง๋ ๋ํ์ ์ธ ํน์ง์ผ๋ก ์์ ์ฑ์ด ์๋ค. ์ต์ ๋์ ๋ฐ๋ก ์์ ์ฑ์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ!
์ฐ๋ฆฌ๊ฐ String, Int, Double ๋ฑ ์ผ๋ฐ์ ์ธ ํ์ ์ ์ง์ ํ ๋,
์ค์ํํธ์ ํ์ ๋ค์ ๋ชจ๋ nil์ด ๋ถ๊ฐํ๊ฒ ๋์ด์๋ค.
์ฌ๊ธฐ์ ์ ๊น, nil์ด๋?
nil์ '๊ฐ์ด ์์'์ ๋ปํ๋ค. 0๊ณผ๋ ๋ค๋ฅธ ๊ฐ๋ !
์๋ฅผ ๋ค์ด, ๋ฌธ์์ด "์ฌ๊ณผ"๋ ์ ํํ ๊ฐ์ด ์๋ ๊ฒ์ ์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌธ์์ด ""๋ ๊ฐ์ด ์๋ ๊ฒ์ผ๊น?
์๋๋ค. ""๋ ๊ฐ์ด ์๋ ๋ฌธ์์ด์ด๋ฉฐ, ๊ฐ์ด ์๋ ๋ฌธ์์ด์ ๋ฐ๋ก nil์ด๋ค.
(nil์ ๋ํ ์์ธํ ์ค๋ช ์ ์ฌ๊ธฐ๐๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
2021.06.07 - [๐ Swift Note] - [Swift] nil ์ ๋ฆฌ (feat.NULL)
[Swift] nil ์ ๋ฆฌ (feat.NULL)
์ค์ํํธ๋ฅผ ์์ํ๊ณ nil์ด๋ ๋จ์ด๋ฅผ ์ฒ์ ๋ค์ด๋ดค๋๋ฐ, ๊ทธ๋ฅ NULL์ด๋ ๋น์ทํด๋ณด์๋ค,, ๊ทผ๋ฐ ์์ธํ ์ฐพ์๋ณด๋ NULL๊ณผ๋ ์์ฐํ ๋ค๋ฅธ๊ฒ์ด๋ผ๋ ๊ฒ์ด๋ผ๋ ๊ฒ,,์ด๋ผ๋,,,, ๊ทธ๋์ ์ด๋ฒ์๋ NULL๊ณผ์ ์ฐจ์ด
seolhee2750.tistory.com
์ต์ ๋์ ์ง์ญํ๋ฉด '์ ํ์ ์ธ'์ด๋ผ๋ ๋ป์ด ๋๋๋ฐ,
๋ง ๊ทธ๋๋ก ๊ฐ์ด ์์ ์๋ ์๊ณ (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์ ๋ํ ๊ธ์ ์ฌ๊ธฐ๐๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
[Swift] Type Annotation๊ณผ Type Inference (ํ์ ์ด๋ ธํ ์ด์ ๊ณผ ํ์ ์ถ๋ก )
์ค์ํํธ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด ๊ฐ๋ Type Annotation์ ๊ดํ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ตฌ๊ธ๋ง ํ ๋๋ ์ด๋ ธํ ์ด์ ์ด๋ผ๋ ๋จ์ด๋ฅผ ๋ง์ด ๋ฐ๊ฒฌํ ์ ์์๋ค. ๊ทธ๋ฅ ๋ฌธ๋งฅ ์ ๋ณ์ ์์ฑ์ ํ์ ์
seolhee2750.tistory.com
์ด ๋ ผ ์ต์ ๋ ํ์ ์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ๊ฐ์ด ์กด์ฌํด์ผ ํ๊ณ ,
๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ(์ ์ธ๋ง ํด์ฃผ๊ณ ๊ฐ์ ๋์ ํ์ง ์์๊ฑฐ๋ ๋ฑ์ ์ํฉ) ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๐ 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 ๊ฐ์ ๊ฐ์ง ์ ์๊ฒ ํด์ค๋ค. (๊ฐ์ด ์์ ์๋, ์์ ์๋!)
์ต์ ๋ ํ์ ๊ณผ ๋ ผ ์ต์ ๋ ํ์ ์ ์์ ๋ค๋ฅธ ํ์ !!!
(์ต์ ๋ ์ถ์ถ์ ๋ํ ๊ธ์ ์ฌ๊ธฐ๐์ ์์ฑํ์ต๋๋ค~!~)
[Swift] ์ต์ ๋ ์ถ์ถ (๊ฐ์ ์ถ์ถ, ์ต์ ๋ ๋ฐ์ธ๋ฉ, ์ต์ ๋ ์ฒด์ด๋) ์ ๋ฆฌ
๋ด ๋ธ๋ก๊ทธ ์ฒซ ๊ธ๋ก ์ต์ ๋์ ๋ํ ๋ด์ฉ์ ์ ๋ก๋ํ์๋ค. ๊ทธ๋ ์๊ฐํ๊ธฐ๋ฅผ, ๋ด๊ฐ ์ค์ํํธ์ ๋ํด ๊ณต๋ถํ๋ค๋ณด๋ ?์ !๋ฅผ ์ ํ๊ฒ ๋์๋ค๊ณ ํ๋ ๊ธฐ์ต,, ๊ทธ ๋ ์ ?์ ๋ํด์ ์๊ฐ๋ฅผ ํ๋ค๋ฉด ๊ทธ์ ์ด์ด
seolhee2750.tistory.com
์ฐธ๊ณ