λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

swift λ¬Έλ²•πŸ–€

[SWIFT] νƒ€μž…μΊμŠ€νŒ…(Type Casting)

νƒ€μž…μΊμŠ€νŒ…μ€ μΈμŠ€ν„΄μŠ€μ˜ νƒ€μž…μ„ ν™•μΈν•˜κ±°λ‚˜, ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό λΆ€λͺ¨ν΄λž˜μŠ€λ‚˜ μžμ‹ν΄λž˜μŠ€μ˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ”μ§€  ν™•μΈν•˜λŠ” μš©λ„μ΄λ‹€.

λ‘κ°€μ§€μ˜ μ—°μ‚°μžκ°€ μ‘΄μž¬ν•œλ‹€.

νƒ€μž…μΊμŠ€νŒ…μ„ 톡해 νŠΉμ • ν”„λ‘œν† μ½œμ„ λ”°λ₯΄λŠ”μ§€ 확인 ν•  μˆ˜λ„ μžˆλ‹€

μΊμŠ€νŒ…μ€ μ‹€μ œλ‘œ μΈμŠ€ν„΄μŠ€λ₯Ό μˆ˜μ •ν•˜κ±°λ‚˜ κ·Έ 값을 λ³€κ²½ν•˜λŠ” 것이 μ•„λ‹Œ, λ‹¨μˆœνžˆ μΊμŠ€νŒ… 된 νƒ€μž…μœΌλ‘œ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό μ²˜λ¦¬ν•˜κ³  μ ‘κ·Όν•œλ‹€.

is μ—°μ‚°μž : type checking 
  • μΈμŠ€ν„΄μŠ€ νƒ€μž…μ„ κ²€μ‚¬ν•˜λŠ” μ΄ν•­μ—°μ‚°μžμ΄λ‹€.
  • 참이면 true , 거짓이면 false
  • ν‘œν˜„μ‹μ΄ νƒ€μž…μ˜ μ„œλΈŒν΄λž˜μŠ€μΈ κ²½μš°μ—λ„ true둜 λ°˜ν™˜
as μ—°μ‚°μž : type casting
  • μ—…μΊμŠ€νŒ… : Upcasting
  • ν•΄λ‹Ήνƒ€μž…μ˜ μƒμœ„νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ‘œ μ‚¬μš©ν•˜λŠ” 것
    • λΆ€λͺ¨ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€λ‘œ ν™œμš©ν•  수 μžˆλ„λ‘ μ»΄νŒŒμΌλŸ¬μ—κ²Œ νƒ€μž…μ •λ³΄λ₯Ό μ „ν™˜
  • λ‹€μš΄μΊμŠ€νŒ… : Downcasting
  • ν•˜μœ„ν΄λž˜μŠ€λ‘œ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ‘œ μ‚¬μš©ν•˜λŠ” 것 
  • μ‹€νŒ¨ν•  수 있기 λ•Œλ¬Έμ— 두가지 μ΄ν•­μ—°μ‚°μžκ°€ 쑴재 
    • as? - νŠΉμ •νƒ€μž…μ΄ λ§žλŠ”μ§€ ν™•μ‹  ν•  수 μ—†μ„λ•Œ (μ˜΅μ…”λ„κ°’μ„ λ°˜ν™˜)
    • as! - νŠΉμ •νƒ€μž…μ΄λΌλŠ” 것이 ν™•μ‹€ν•  λ•Œ (force- unwrap을 ν•œ 값을 λ°˜ν™˜)