๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS/Swift

[Swift] ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜

์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค!

๊ธ€์„ ๊ต‰์žฅํžˆ ์˜ค๋žœ๋งŒ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ,,

๊ทธ๋™์•ˆ TIL ์Šคํ„ฐ๋””๋ฅผ ํ•˜๋ฉฐ ๊นƒํ—™์— ๊ทธ๋‚  ๊ณต๋ถ€ํ•œ๊ฑธ ์—…๋กœ๋“œํ•˜๋‹ค๋ณด๋‹ˆ

ํ‹ฐ์Šคํ† ๋ฆฌ ์—…๋กœ๋“œ๋ฅผ ๊ฑฐ์˜ ๊นŒ๋จน๊ฒŒ๋œ... ๋จธ ๊ทธ๋Ÿฐ ์‚ฌ์—ฐ์ด...์žˆ์ง€๋งŒ ์‚ฌ์‹ค ํ•‘๊ณ„๊ณ ..ใ…Ž 

TIL ๊ธ€์„ ํ‹ฐ์Šคํ† ๋ฆฌ์—๋„ ์˜ฎ๊ธฐ๋ฉด์„œ ์ด์ œ ๋‹ค์‹œ ๊พธ์ค€ํžˆ ์—…๋กœ๋“œ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!! ์•„์ขŒ์ž~

 

์˜ค๋Š˜์€ Swift์—์„œ ์ž๋ฃŒ๋ฅผ ๋ช…์‹œํ•˜๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ธ ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜์„ ๋น„๊ตํ•˜๋ฉฐ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

Swift์—์„œ์˜ ์ƒ์ˆ˜, ๋ณ€์ˆ˜ ์„ ์–ธ 

  • let : ์ƒ์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ
  • var : ๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ
let ์ƒ์ˆ˜๋ช…: ํƒ€์ž… = ๊ฐ’
var ๋ณ€์ˆ˜๋ช…: ํƒ€์ž… = ๊ฐ’

// ์„ ์–ธ ์˜ˆ์‹œ
let name: String = "Eunju"
var age: Int = 20

 

์œ„์™€ ๊ฐ™์ด let๊ณผ var ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ƒ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ํƒ€์ž…์„ ๋นผ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์จ์ค€๋‹ค๋ฉด?? ์—๋Ÿฌ๊ฐ€ ๋‚ ๊นŒ์š”?

ํƒ€์ž… ์ถ”๋ก (Type Inference)

let name = "Eunju"
var age = 20

 

์ •๋‹ต์€ ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!!

 

์œ„์™€ ๊ฐ™์ด ์ƒ์ˆ˜, ๋ณ€์ˆ˜์˜ ํƒ€์ž…๋„ ์ •ํ™•ํžˆ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์‹œ์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ƒ๋žตํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€์ˆ˜ ๊ฐ’์˜ ํƒ€์ž…์„ ์ถ”๋ก ํ•˜์—ฌ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค.
์ด๋ฅผ ํƒ€์ž… ์ถ”๋ก (Type Inference) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
ํƒ€์ž… ์ถ”๋ก ์€ ์• ํ”Œ์—์„œ๋„ Swift์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜ ์„ ์–ธ์„ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์žฅ์ ์ด๊ฒ ์ฃ ?

 

ํƒ€์ž… ์ถ”๋ก ์˜ ๋ฌธ์ œ์ 

ํ•˜์ง€๋งŒ, ํƒ€์ž… ์ถ”๋ก ์—๋„ ๋ฌธ์ œ์ ์ด ๋ช‡๊ฐ€์ง€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

1. ํƒ€์ž… ์ถ”๋ก ์œผ๋กœ ์–ป์–ด์ง€๋Š” ํƒ€์ž…์ด ์›ํ•˜๋Š” ํƒ€์ž…์ด ์•„๋‹ ๊ฒฝ์šฐ

ํƒ€์ž… ์ถ”๋ก  ๊ธฐ๋Šฅ์ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์‹œ๋กœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

let num = 10.0

 

Float ํƒ€์ž…์˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ๋ ค๊ณ  ์œ„์™€ ๊ฐ™์ด ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

ํ•˜์ง€๋งŒ, num์˜ ์ž๋ฃŒํ˜•์€ ์œ„์™€ ๊ฐ™์ด Floatํ˜•์ด ์•„๋‹Œ Doubleํ˜•์œผ๋กœ ์žกํžˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ๊ฐ’์ด ์ถ”๋ก ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ดˆ๊ธฐ๊ฐ’์„ ํ†ตํ•ด ์ž๋ฃŒํ˜•์„ ์œ ์ถ”ํ•  ๋•Œ
Float/Double, Character/String ๊ณผ ๊ฐ™์ด ์• ๋งคํ•œ ํƒ€์ž…์˜ ๊ฒฝ์šฐ, ๋” ํฐ ๋ฒ”์œ„์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
(Float -> Double, Character -> String)
์ด ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ์ถ”๋ก ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

 

2. ์ดˆ๊ธฐ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ(์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋ถ„๋ฆฌํ•  ๊ฒฝ์šฐ)

์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ๋™์‹œ์— ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ณ , ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ๋ถ„๋ฆฌ๋œ ๊ตฌ๋ฌธ์œผ๋กœ ์ž‘์„ฑ๋  ๊ฒฝ์šฐ ํƒ€์ž… ์ถ”๋ก ์„ ์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด ์ ์ ˆํ•œ ํƒ€์ž…์„ ์ถ”๋ก ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํƒ€์ž… ์ถ”๋ก ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ, ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜(Type Annotation)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜(Type Annotation)

๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๊ทธ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•ด ์คŒ์œผ๋กœ์จ ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ’์ด ์ €์žฅ๋  ๊ฒƒ์ธ์ง€๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ์— ์ง์ ‘ ์•Œ๋ ค์ฃผ๋Š” ๋ฌธ๋ฒ•์„ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜(Type Annotation)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

let name: String = "Eunju"
var age: Int = 20

 

์ด๋ ‡๊ฒŒ ์ฒซ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์จ์ฃผ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค!

ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์œผ๋กœ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๊ฒฝ์šฐ์—๋Š” ํƒ€์ž…์„ ๋ช…์‹œํ•ด์คฌ์œผ๋ฏ€๋กœ ์ดˆ๊ธฐ๊ฐ’์ด ์—†์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.
์ถ”๊ฐ€์ ์œผ๋กœ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์ด ์†๋„ ๋ฉด์—์„œ์˜ ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
ํƒ€์ž… ์ถ”๋ก ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž…์„ ์ถ”๋ก ํ•˜๋Š” ๊ณผ์ •์—์„œ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜๋ณด๋‹ค ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!
์†๋„ ์ฐจ์ด๊ฐ€ ํฌ์ง„ ์•Š๊ฒ ์ง€๋งŒ ํฐ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์ฐจ์ด๊ฐ€ ๊ฝค ๋‚  ์ˆ˜๋„ ์žˆ๊ฒ ๋„ค์š”!

 


[์ฐธ๊ณ  ์ž๋ฃŒ]

 

Swift) ํƒ€์ž… ์ถ”๋ก (Type Inference) vs ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜(Type Annotation)

์•ˆ๋…•ํ•˜์„ธ์—ฌ ์†Œ๋“œ๋ฆฝ๋‹ˆ๋‹ค ๐ŸŒผ ๋งจ๋‚  ๊ธ€์žํ‹ฐ์ฝ˜ ์ผ๋Š”๋ฐ ์ด๋ชจ์ง€๋กœ ๋ฐœ์ „ํ•จ ใ…Žใ…Ž ์จŒ๋“  ์ง€๊ธˆ๊ป ์ข€ ๋ฌด๊ฑฐ์šด ๋‚ด์šฉ?์˜ ํฌ์ŠคํŒ…์„ ๋‹ค๋ค˜๋‹ค๋ฉด ๋‹น๋ถ„๊ฐ„์€ Swift ํฌ์ŠคํŒ…์„ ํ•˜๋ฉฐ ์ „ํ™˜์„ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค~~~ ์ฒซ ํฌ์ŠคํŒ…์˜

babbab2.tistory.com

 

Swift - ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜

ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜

vincentgeranium.github.io