-
[Swift] Type Inference, Type AnnotationSwift 2022. 1. 5. 23:04
(๋ชจ๋ ์ฝ๋๋ Playground์์ ์์ฑ๋์์ต๋๋ค.)
Swift์์ ๋ณ์ ๋๋ ์์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค.
๋ฐ๋ก Type Inference๊ณผ Type Annotation์ธ๋ฐ,
๋ง ๊ทธ๋๋ก Type Inference๋ ์๋ฃํ์ ์ถ๋ก ํ๋ ๊ฒ์ด๊ณ , Type Annotation์ ์๋ฃํ์ ์ง์ ์ง์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
์ด์ ๋ํด ์์ธํ ์์๋ณด๋๋ก ํ์.
Type Inference
Type Inference๋ ํ์ ์ ์ถ๋ก ํ๋ ๊ฒ์ผ๋ก, ์ด๊ธฐ๊ฐ์ ํตํด ์๋ฃํ์ด ๊ฒฐ์ ๋๋ ๊ฒ์ด๋ค. ์ฆ, ์๋ฃํ์ ์ง์ ์ง์ ํด์ฃผ์ง ์๋๋ค.
๋ฐ๋ผ์ Type Inference๋ฅผ ์ด์ฉํ๋ ค๋ฉด ๋ฐ๋์ ์ด๊ธฐ๊ฐ์ ์ ์ฅํด์ฃผ์ด์ผ ํ๋ค.
์๋์ ๊ฐ์ด var ๋ณ์์ด๋ฆ = ์ด๊ธฐ๊ฐ ๋๋ let ์์์ด๋ฆ = ์ด๊ธฐ๊ฐ ์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ฉด, Type Inference๋ฅผ ์ด์ฉํ ์ ์๋ค.
var mood = "happy" let number = 5์์ ๊ฐ์ด ์ ์ฅํ ๊ฐ์ ํ์ ์ ํ์ธํ๊ธฐ ์ํด์ type(of:) ํจ์๋ฅผ ์ด์ฉํ ์ ์๋๋ฐ, ์ด๋ ๊ฐ์ ํ์ ์ ๋ฐํํด์ค๋ค.
type(of: mood) // String.Type type(of: number) // Int.Type
Type Annotation
Type Annotation์ Type Inference์ ๋ฌ๋ฆฌ, ์๋ฃํ์ ์ง์ ์ง์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ Type Inference์ ๋ฌ๋ฆฌ, ๋ฐ๋์ ์ด๊ธฐ๊ฐ์ ์ง์ ํด์ค ํ์๊ฐ ์๋ค.
var food: String = "Chicken" let weight: Double = 43.0์๋ฃํ์ ์ง์ ์ง์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ๋ณ์ ๋๋ ์์์ ์ ์ธ๊ณผ ๊ฐ์ ์ด๊ธฐํ๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ณ , ์ปดํ์ผ ์๊ฐ ๋ํ ๋จ์ถ๋๋ค๋ ์ฅ์ ์ด ์๋ค.
var food: String food = "Chicken" let weight: Double weight = 43.0์ด ๋ํ type(of:) ํจ์๋ก ํ์ธํด๋ณผ ์ ์๋ค!

๋ง์ง๋ง์ผ๋ก ๋ด์ฉ์ ๋ค์ ์ ๋ฆฌํด๋ณด์!
Type Inference์ ์๋ฃํ์ ์ถ๋ก ํ๋ ๊ฒ์ธ๋ฐ, ์ด ๋ ๋ฐ๋์ ์ด๊ธฐ๊ฐ์ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค.
Type Annotation์ ์๋ฃํ์ ์ง์ ํด์ฃผ๋ ๊ฒ์ธ๋ฐ, ํ์ ์ ์ง์ ์ง์ ํด์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ณ์/์์์ ์ ์ธ๊ณผ ์ด๊ธฐํ๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ณ , ์ปดํ์ผ ์๊ฐ ๋ํ ๋จ์ถ๋๋ค๋ ์ฅ์ ์ด ์๋ค.
๋ค๋ง Type Inference์์ ํ๋์ ๋ฌธ์๋ง ์ ์ฅํ ๊ฒฝ์ฐ, Swift๋ ์ด๋ฅผ ์๋์ผ๋ก String์ผ๋ก ์ ์ฅํ๋ค.
๋ฐ๋ผ์ String Type์ด ์๋ Character Type์ผ๋ก ์ ์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ์ง์ Type Annotation์ ํด์ฃผ์ด์ผํ๋ค!
๋ง์ฐฌ๊ฐ์ง๋ก, Swift๋ ์ค์๋ฅผ ์๋์ผ๋ก Double Type์ผ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์, Double Type์ด ์๋ Float Type์ผ๋ก ์ ์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ์ง์ Type Annotation์ ํด์ฃผ์ด์ผํ๋ค.
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Range Operator (๋ฒ์ ์ฐ์ฐ์) (0) 2022.01.09 [Swift] ๋จ๋ฝ ํ๊ฐ (Short-circuit Evaluation) (0) 2022.01.07 [Swift] ์ฐ์ฐ์ (Operator) (0) 2022.01.06 [Swift] Scope (0) 2022.01.04 [Swift] ๊ธฐ๋ณธ ์ฉ์ด ์ ๋ฆฌ (0) 2022.01.03