λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
3️⃣ Swift/Swift 정리

[Swift] Type Annotationκ³Ό Type Inference (νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜κ³Ό νƒ€μž… μΆ”λ‘ )

by seolhee2750 2021. 6. 11.

μŠ€μœ„ν”„νŠΈλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€λ³΄λ©΄ 가끔 Type Annotation에 κ΄€ν•œ 였λ₯˜κ°€ λ°œμƒν•  λ•Œκ°€ μžˆλ‹€.

그리고 ꡬ글링 ν•  λ•Œλ„ μ–΄λ…Έν…Œμ΄μ…˜μ΄λΌλŠ” 단어λ₯Ό 많이 λ°œκ²¬ν•  수 μžˆμ—ˆλ‹€.

κ·Έλƒ₯ λ¬Έλ§₯ 상 λ³€μˆ˜ μƒμ„±μ‹œ νƒ€μž…μ„ μ§€μ •ν•΄μ£ΌλŠ” 것을 λœ»ν•œλ‹€κ³  μ΄ν•΄ν•˜κ³  μžˆμ—ˆλŠ”λ°, 

μ˜€λŠ˜μ€ μŠ€μœ„ν”„νŠΈμ˜ Type Annotationκ³Ό Inference에 λŒ€ν•΄ μ •ν™•νžˆ 정리해보렀고 ν•œλ‹€.

 

πŸ“Ž Type Annotation (νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜)

μŠ€μœ„ν”„νŠΈμ—μ„œλŠ” λ³€μˆ˜ ν˜Ήμ€ μƒμˆ˜λ₯Ό 생성할 λ•Œ

λ³€μˆ˜ μ„ μ–Έ μ‹œμ—λŠ” var [λ³€μˆ˜λͺ…]: [데이터 νƒ€μž…] = [κ°’]의 ν˜•νƒœλ‘œ,

μƒμˆ˜ μ„ μ–Έ μ‹œμ—λŠ” let [μƒμˆ˜λͺ…]: [데이터 νƒ€μž…] = [κ°’]의 ν˜•νƒœλ‘œ μƒμ„±ν•œλ‹€.

// λ³€μˆ˜ 생성
var a1: Int
var a2: Int = 0

// μƒμˆ˜ 생성
let b1: Int
let b2: Int = 0

 

ν•˜μ§€λ§Œ λ³€μˆ˜λ‚˜ μƒμˆ˜λ₯Ό 생성할 λ•Œ κΌ­ 데이터 νƒ€μž…μ„ λͺ…μ‹œν•΄μ€˜μ•Ό ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€.

Type Inferenceλ₯Ό μ‚¬μš©ν•˜λ©΄ 데이터 νƒ€μž…μ˜ λͺ…μ‹œ 없이도 생성이 κ°€λŠ₯ν•˜λ‹€.


πŸ“Ž Type Inference (νƒ€μž… μΆ”λ‘ )

Type InferenceλŠ” 말 κ·ΈλŒ€λ‘œ,

데이터 νƒ€μž…μ˜ 지정 없이도 μž…λ ₯된 값을 증거둜 μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μΆ”λ‘ ν•˜μ—¬ μ§€μ •ν•΄μ£ΌλŠ” 것이닀.

// λ³€μˆ˜ 생성
var a1 = 0
var a2 = "hello"

// μƒμˆ˜ 생성
let b1 = 0
let b2 = "hi"

κ·ΈλŸ¬λ‚˜ μœ„ μ½”λ“œλ₯Ό 보면 μ•Œ 수 μžˆλ“―, νƒ€μž… 좔둠을 μ‚¬μš©ν•  λ•ŒλŠ” μ£Όμ˜ν•΄μ•Ό ν•  점이 μžˆλ‹€.

 

πŸ’₯μ£Όμ˜ν•  점 πŸ’₯

  • λ‹Ήμ—°ν•˜μ§€λ§Œ, λ³€μˆ˜λ‚˜ μƒμˆ˜ μ„ μ–Έ μ‹œ κΌ­ μ΄ˆκΉƒκ°’μ„ 지정해주어야 ν•œλ‹€.
    주어진 μ΄ˆκΉƒκ°’μ„ 가지고 μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μΆ”λ‘ ν•˜μ—¬ μ§€μ •ν•΄μ£ΌλŠ” 것이기 λ•Œλ¬Έμ—,
    μ΄ˆκΉƒκ°’ μ—†μ΄λŠ” annotation 였λ₯˜κ°€ λ°œμƒν•œλ‹€.
  • νƒ€μž… μΆ”λ‘ μœΌλ‘œ λ³€μˆ˜λ‚˜ μƒμˆ˜λ₯Ό μƒμ„±ν–ˆμ–΄λ„, νƒ€μž… μΊμŠ€νŒ… 없이 λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ°”κΎΈμ–΄ μ‚¬μš©ν•˜λŠ” 것은 λΆˆκ°€ν•˜λ‹€.
    예λ₯Ό λ“€μ–΄, μ²˜μŒμ— μ΄ˆκΉƒκ°’μ„ Int둜 μ£Όμ—ˆλ‹€λ©΄ κ·Έ λ³€μˆ˜λ‚˜ μƒμˆ˜λŠ” Int둜 μ§€μ •λœ 것이기 λ•Œλ¬Έμ—
    이후에 λ‹€λ₯Έ νƒ€μž…μ˜ 값을 μ €μž₯ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ‹€.

πŸŒŸμ •λ¦¬ 🌟

νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜μ€ λ³€μˆ˜λ‚˜ μƒμˆ˜μ˜ 생성 μ‹œ 데이터 νƒ€μž…μ„ μ§€μ •ν•΄μ£ΌλŠ” 것, 좔둠은 지정 μ•ˆν•΄μ£ΌλŠ” 것.
νƒ€μž… μΆ”λ‘  μ‚¬μš©μ‹œμ—λŠ” κΌ­ μ΄ˆκΉƒκ°’ 지정해주기!

 


μ°Έκ³ 

 

λŒ“κΈ€