Swift Struct๋ฅผ ํตํ ํ์ ์์ ์ฑ ํ๋ณด ๋ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์ต์ ํ
Swift Structs โ Building Your Own Custom Types ๐๏ธ
AI ์์ฝ
Context
๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๋ง์ผ๋ก๋ ๋ณต์กํ ๋๋ฉ์ธ ์ํฐํฐ๋ฅผ ํํํ๋ ๋ฐ ํ๊ณ๊ฐ ์กด์ฌํจ. ํนํ Tuple ์ฌ์ฉ ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ํจ์ ์๊ทธ๋์ฒ์ ์ค๋ณต ์์ ๋น์ฉ์ด ์ฆ๊ฐํ๋ ๋ฌธ์ ๋ฐ์.
Technical Solution
- ์ฌ์ฉ์ ์ ์ ๋ณตํฉ ๋ฐ์ดํฐ ํ์ ์ ์ ์ํ๋ Struct ๋์ ์ ํตํ ๋ฐ์ดํฐ ์์ง๋ ํฅ์
- Memberwise Initializer ์๋ ์์ฑ์ ํตํ ์ธ์คํด์ค ์์ฑ ๋ก์ง์ ๋จ์ํ ๋ฐ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ๊ฑฐ
- mutating ํค์๋ ๋์ ์ ํตํ Value Type์ ์ํ ๋ณ๊ฒฝ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ปดํ์ผ ๋จ๊ณ์์ ์ ์ด
- let๊ณผ var ์ ์ธ์ ๋ฐ๋ฅธ ๋ถ๋ณ์ฑ ์ ์ด๋ก ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ ๋ฐ Side Effect ๋ฐฉ์ง
- ๋ฐ๋ณต๋๋ ๋ฐ์ดํฐ ์์ดํ๋ฅผ Struct๋ก ์ถ์ํํ์ฌ ์ ์ง๋ณด์ ํจ์จ์ฑ์ ๋์ธ ์ค๊ณ ์ ์ฉ
์ค์ฒ ํฌ์ธํธ
- ์ผํ์ฑ ๋ค์ค ๊ฐ ๋ฐํ์ด ํ์ํ ๊ฒฝ์ฐ Tuple์ ์ฌ์ฉํ๊ณ , ์ฌ๋ฌ ํจ์์์ ๊ณต์ ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ Struct๋ก ์ ์ํ ๊ฒ - Struct ๋ด์์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฉ์๋์๋ ๋ฐ๋์ mutating ํค์๋๋ฅผ ๋ช ์ํ์ฌ ๋ถ๋ณ ์ธ์คํด์ค์์์ ํธ์ถ์ ์ฐจ๋จํ ๊ฒ - ๋๋ฉ์ธ ๋ชจ๋ธ ํ์ฅ ์ Struct ์ ์๋ถ๋ง ์์ ํ์ฌ ์ฐธ์กฐํ๋ ๋ชจ๋ ํจ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ํํ๋ ์ค๊ณ๋ฅผ ๊ฒํ ํ ๊ฒ