ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Type Inference, Type Annotation
    Swift 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์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.