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 |