ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์•ˆ๋…•ํ•˜์„ธ์š”?

๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค~~

 

์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ €์žฅ ํ”„๋กœํผํ‹ฐ(Stored Properties)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”.

ํ˜น์‹œ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ด์ „ ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”!!

 

์˜ค๋Š˜์€ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ(Computed Properties)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ(Computed Properties)


์—ฌ๋Ÿฌ๋ถ„ ์ฝ”๋”ฉํ•˜์‹œ๋‹ค๊ฐ€ 

์–ด๋–ค ์ฝ”๋“œ ๋ธ”๋Ÿญ์•ˆ์— get, set ์ด๋ ‡๊ฒŒ ๋ถ™์–ด ์žˆ๋Š”๊ฒƒ์„ ๋ณด์…จ์„ํ…๋ฐ์š”?(์•„๋งˆ...ใ…Ž)

๊ทธ๋Ÿฐ ์• ๋“ค์ด ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์—์š”!!

 

์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ์ •๋ณด๋ฅผ ์ฐพ์•„๋ณด๋ฉด

 

1. ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

2. ์—ฐ์‚ฐ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ๊ณต๊ฐ„ ์—†๋‹ค.

3. ์‹ค์ œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์—ฐ์‚ฐ์„ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค.

4. ์—ฐ์‚ฐ์œผ๋กœ ์ธํ•ด ๊ฐ’์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฏ€๋กœ var๋กœ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค.

5.  ์—ฐ์‚ฐ์„ ํ• ๋•Œ getter์™€ setter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ’์„ ์„ธํŒ…ํ•œ๋‹ค.

 

์ด๋Ÿฐ ํŠน์ง•๋“ค์ด ์žˆ๋Š”๋ฐ

์ •๋ง ์ด๋ก ์ ์ธ ์ด์•ผ๊ธฐ์—ฌ์„œ ์ž˜ ์™€๋‹ฟ์ง€ ์•Š์•„์š”ใ… ใ… 

 

๊ทธ๋Ÿผ ๋ฐ”๋กœ ์ฝ”๋“œ๋กœ ๋ณด๋ฉด์„œ ์•Œ์•„๋ณผ๊ฒŒ์š”!!!

 

 

์ผ๋‹จ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

var favoriteRamen: String {
    get {
        return "๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ \(favoriteRamen)"
    }
    set {
        favoriteRamen = newValue
    }
}

์ œ์ผ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์ด ๋ฌด์—‡์ธ์ง€ ๋‚˜ํƒœ๋‚ด๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ๋งŒ๋“ค์–ด๋ดค์–ด์š”ใ…Žใ…Ž

 

์ผ๋‹จ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๊ผญ ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•ด์š”.(์ค‘์š”!!!!)

์™œ๋ƒํ•˜๋ฉด ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์—†์–ด์š”!!

๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๋Š” ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋˜ ๊ฐ’์ด ๊ณ„์† ๋ฐ”๋€Œ๊ณ  ์žˆ์ฃ ?

๊ทธ๋ž˜์„œ var๋กœ ์„ ์–ธํ•ด์ฃผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  get๊ณผ set์€ ๊ฐ๊ฐ getter์™€ setter๋กœ ๋ถ€๋ฅด๋Š”๋ฐ์š”.

 

getter๋Š” ์–ด๋–ค ๊ฐ’์„ ๋ฆฌํ„ดํ•  ๊ฑด์ง€ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š” favoriteRamen์— ์ ‘๊ทผํ•˜๋ฉด ์•„๋ž˜ ๊ตฌ๋ฌธ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

 

setter๋Š” ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ๋‚ด๋ถ€์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ผ์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์ฝ”๋“œ ์—์„œ๋Š” favoriteRamen์— ์ ‘๊ทผํ•˜์—ฌ ์ˆ˜์ •ํ•˜๋ฉด newValue๋ฅผ ํ†ตํ•ด ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์˜ ์ข…๋ฅ˜๊ฐ€ ๋ฐ”๋€๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ๋ญ”๊ฐ€ ์ด์ƒํ•˜์ง€ ์•Š๋‚˜์š”?

๋ถ„๋ช…ํžˆ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ

์œ„์— ์žˆ๋Š” ์ฝ”๋“œ์—์„œ๋Š” favoriteRamen ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฑธ๊นŒ์š”?

 

 

๋„ค!! ์œ„์˜ ์ฝ”๋“œ๋Š” ํ‹€๋ ธ์–ด์š”.

favoriteRamen๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ €๋ ‡๊ฒŒ ์“ฐ์‹œ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚ ๊ฑฐ์—์š”ใ… 

 

 

๊ทธ๋Ÿผ ์ฝ”๋“œ๊ฐ€ ๊ตฌํ˜„๋˜๋„๋ก ์ˆ˜์ •ํ•ด ๋ณผ๊ฒŒ์š”!

 

struct Ramen {
    var ramen: String
    
    var favoriteRamen: String {
        get {
            return "๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ \(ramen)"
        }
        
        set(newRamen) {
            ramen = newRamen
        }
    }
}

var myRamen: Ramen = Ramen(ramen: "๋„ˆ๊ตฌ๋ฆฌ")
print(myRamen.favoriteRamen)
// ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ ๋„ˆ๊ตฌ๋ฆฌ

myRamen.favoriteRamen = "์‹ ๋ผ๋ฉด"
print(myRamen.favoriteRamen)
// ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ ์‹ ๋ผ๋ฉด

 

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”!!

 

์ฝ”๋“œ๋ฅผ ์‚ดํŽด ๋ณด๋ฉด

getter ์—์„œ๋Š” favoriteRamen์— ์ ‘๊ทผํ•˜๋ฉด ์ œ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์ด ๋ฌด์—‡์ธ์ง€ ramen์˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ์–ด์š”!

 

setter ์—์„œ๋Š” favoriteRamen์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์ฃผ๋ฉด ramen์˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋ง ๊ทธ๋Œ€๋กœ ๊ฐ’์„ ์ˆ˜์ •ํ•œ๋‹ค๋˜์ง€ ์—ฐ์‚ฐ๋งŒ ํ•˜๊ณ  ์žˆ์ฃ ?

 

 

์ž ๊ทธ๋Ÿผ getter์™€ setter์— ๋Œ€ํ•ด ์‚ฌ์šฉ๋ฒ•์„ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊ฒŒ์š”!

 

๋จผ์ € getter๋Š” ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š”๋ฐ return์„ ์ƒ๋žตํ•˜๋”๋ผ๊ณ  ๊ทธ ๊ฐ’์„ ๋ฆฌํ„ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์งง์€ getter์„ ์–ธ ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ์š”.

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”~~

struct Ramen {
    var ramen: String
    
    var favoriteRamen: String {
        get {
            "๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ \(ramen)"
        }
        
        set(newRamen) {
            ramen = newRamen
        }
    }
}

 

์งง์€ getter ์„ ์–ธ์ด ์žˆ๋‹ค๋ฉด ์งง์€ setter์„ ์–ธ๋„ ์žˆ๊ฒ ์ฃ ?

struct Ramen {
    var ramen: String
    
    var favoriteRamen: String {
        get {
            "๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ \(ramen)"
        }
        
        set {
            ramen = newValue
        }
    }
}

 

set ๋’ค์— ์•„๊นŒ ์ œ๊ฐ€ newRamen ์ด๋ผ๊ณ  ์ด๋ฆ„์„ ์ง€์—ˆ์—ˆ๋Š”๋ฐ์š”์งง์€ setter์„ ์–ธ์€ ์ด๋ฆ„์„ ์•ˆ์ง“๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”!!

 

๊ทธ๋Ÿฐ๋ฐ ์ด๋ฆ„์„ ๋”ฐ๋กœ ์„ค์ •์„ ์•ˆํ•˜๊ฒŒ ๋˜๋ฉด

๋ฐ˜๋“œ์‹œ newValue๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

newValue์˜ ํƒ€์ž…์€ ๋”ฐ๋กœ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ favoriteRamen์˜ ํƒ€์ž… String์„ ๋”ฐ๋ผ๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ๋˜ ๊ถ๊ธˆํ•œ ์ !!

getter์™€ setter๋ฅผ ํ•˜๋‚˜๋งŒ ์“ธ ์ˆ˜ ์žˆ๋‚˜??

 

 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆฌ๋ฉด

getter๋งŒ ํ˜ผ์ž ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , setter๋Š” getter๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”!!

 

์ฝ”๋“œ๋กœ ํ™•์ธํ•ด ๋ณผ๊ฒŒ์š”!!

struct Ramen {
    var ramen: String
    
    var favoriteRamen: String {
        get {
            return "๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ \(ramen)"
        }
    }
}

var myRamen: Ramen = Ramen(ramen: "๋„ˆ๊ตฌ๋ฆฌ")
print(myRamen.favoriteRamen)
// ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ผ๋ฉด์€ ๋„ˆ๊ตฌ๋ฆฌ

myRamen.favoriteRamen = "์‹ ๋ผ๋ฉด" // error

 

์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด getter๋งŒ ์„ค์ •ํ•ด ์ฃผ์—ˆ๋Š”๋ฐ์š”!

๊ทธ๋Ÿผ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์—์„œ favoriteRamen์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์ฃผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹คใ… ใ… 

์ฃผ์˜ํ•ด ์ฃผ์…”์•ผ ํ•ด์š”!!

 

 

 

ํœด...

์˜ค๋Š˜์€ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹คใ…Žใ…Ž

๊ธ€ ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ