Swift- inout

2022. 6. 28. 10:24ใ†ios

Swift - inout

 

 

์˜ค๋Š˜์€ Swift ํ•จ์ˆ˜ ๋ฌธ๋ฒ•์ธ inout ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์šฐ๋ฆฌ๋Š” ์•ž ํฌ์ŠคํŒ… https://pololove.tistory.com/97 ์—์„œ ์Šค์œ„ํ”„ํŠธ์—์„œ ํ•จ์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. 

๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” let์œผ๋กœ ์„ ์–ธ๋˜๋ฉฐ ์ด๋Š” "์ƒ์ˆ˜"์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ทธ๋Ÿผ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ๋งŒ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ์š”? 

 

์•„๋‹™๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— ์ „๋‹ฌ๋ฐ›์€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’์„ ๋ณ€๊ฒฝ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” inout ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

inout ํŒŒ๋ผ๋ฏธํ„ฐ

ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ.

 

 

inoutํ‚ค์›Œ๋“œ์˜ ์‚ฌ์šฉ๋ฒ•๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

ํ•จ์ˆ˜์˜ ํƒ€์ž… ์•ž์— inout ํ‚ค์›Œ๋“œ๋ฅผ ์ ์–ด์คŒ์œผ๋กœ์จ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ let์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์›๋ณธ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

์ฆ‰, ๊ธฐ์กด์—๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›์„ ๋•Œ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•œ ๊ฒƒ์— ๋ฐ˜ํ•ด inout ์„ ์ด์šฉํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •์˜๋Š” ์›๋ณธ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์›๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ •ํ™•ํžˆ๋Š” copy-in, copy-out ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜ํ™˜๋  ๋•Œ์˜ ๊ฐ’์ด ๊ฒฐ๊ตญ ์›๋ณธ ๋ณ€์ˆ˜์— ์žฌํ• ๋‹นํ•˜๊ธฐ์— ๊ฐ™๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) 

 

์—ฌ๊ธฐ์„œ ์•Œ์•„์•ผํ•  ๊ฒƒ์€ "์›๋ณธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ๋ฐ›์•„์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค." ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋„ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ๊ฒ ์ฃ ?

 

 

ํ˜ธ์ถœ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

Swift์—์„œ &๋ณ€์ˆ˜๋ช… ์€  "๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ํ‘œํ˜„์‹" ์ž…๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์›๋ณธ๋ณ€์ˆ˜๋ฅผ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ inout ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋Š”๋ฐ์š”, ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

1. ์ƒ์ˆ˜ let์ด๋‚˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ X

2. ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ธฐ๋ณธ๊ฐ’ ์„ ์–ธ X

3. ๊ฐ€๋ณ€ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ X

 

'ios' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

swift - ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด  (0) 2022.07.05
Swift - ์—ด๊ฑฐํ˜•(enum), ์›์‹œ๊ฐ’, ์—ฐ๊ด€๊ฐ’  (0) 2022.06.30
Swift - ํ•จ์ˆ˜  (0) 2022.06.27
Swift - if let (Optional)  (0) 2022.06.12
Swift - let, var, array, dictionary  (0) 2022.06.12