์๋ ํ์ญ๋๊น, ๋ฏผํธ์ ๋๋ค. ๐
WWDC Swift Macro๋ฅผ ๋ณด๋ค ๋ณด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง์ ๋ง์ด ์ด๋ฆฐ ๊ฒ ๊ฐ์์ ํ ๋ฒ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ํจ๋ฌ๋ค์์๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฑ์ด ์์ต๋๋ค. ์ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ํ ๋ณ๊ฒฝ๊ณผ ๊ฐ๋ณ ๋ฐ์ดํฐ ์ฌ์ฉ์ ์ต์ํํ๊ณ , ์์ ํจ์์ ๋ถ๋ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์กฐํ๋ ํ๋ก๊ทธ๋๋ฐํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ํ ๋ง๋๋ก ์ฌ์ด๋ ์ดํํธ๊ฐ ์๋ ๊ธฐ๋ฅ์ ๋ง๋๋ ๊ฒ์ ์ง์คํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ณ , ๋ถ์์ฉ(Side Effect)์ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ฌ๋ฌ๊ฐ์ง ํน์ง๋ค์ ๋ํด์ ์ข ๋ ์์ธํ ์์๋ด ์๋ค.
Random ํจ์๋ ์ ๋ ์์ํ ์ ์๋ค.
์์ ํจ์๋ ๋ฌด์์ผ๊น์? ๋์ผํ Input์๋ ์ธ์ ๋ ๋์ผํ Output์ ํ๋, ์ฌ์ด๋ ์ดํํธ๊ฐ ๋ฐ์ํ์ง ์๋ ํจ์์ ๋๋ค. ๋๋ฌธ์ ์์ธก์ด ๊ฐ๋ฅํ๊ณ , ํ ์คํธํ๊ธฐ ์ฌ์ด ์ฝ๋ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Random ํจ์์ ๊ฒฝ์ฐ๋ ํ๋์ ์์์ ์ฌ๋ฌ ๊ฐ์ด ๋์ํ ์ ์๊ธฐ์ ์ํ์ ์ผ๋ก ํจ์๊ฐ ์๋๋ผ๊ณ ํ ์ ์๊ณ , ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก๋ ๋ถ์ ํจ์๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๋ชจ๋ ํจ์๋ ๊ฐ์ ๋ฐํํด์ผ ํ๋ค.
์ฐ๋ฆฌ๊ฐ ํจ์๋ฅผ ๊ตฌํํ ๋, ๋ฐํ ๊ฐ์ด ์๋ Void์ ๋ํด ๋ค๋ค ์๊ณ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ํจ์์ ๋์ ์ ๋ X -> Y ์ด๋ค. input ์ด ์๋๋ฐ ouput ์ด ์์ผ๋ฉด ํจ์๋ก ์ธ์ ํ์ง ์์ต๋๋ค. ๊ทธ ์ด์ ๊ฐ ๋ฌด์์ผ๊น์? ์์ ๋งํ๋ฏ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์์ ํจ์์ ๋ถ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ํฉ๋๋ค. ์ฆ, ๋ถ๋ณ์ฑ์ด ์ค์ํฉ๋๋ค. ๋ฐํ ๊ฐ์ด ์์ผ๋ฉด ๋ถ๋ณ์ฑ์ ๋ํด์ ์์ ๊ฐ์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด ๊ฐ์ด mutable ํ์ง immutable ํ์ง ํ์ธํ ์ ์์ด ์ํ์ ๋ณ๊ฒฝ์ ๋ํ ํ์ธ์ด ๋ถ๊ฐํฉ๋๋ค. ๋ํ ํจ์๊ฐ ์คํ์ ๋์์ง๋ง ๋ฐํ๊ฐ์ด ์๋ค๋ฉด, ๋ด๋ถ์์๋ ๋ฌด์ธ๊ฐ๋ฅผ ์คํํ์๋ค๋ ์๋ฏธ์ด๊ธฐ์ ์ด๋๊ฐ๋ ๊ฐ์ด ๋ฐ๋์์ ๊ฒ์ด๊ณ ์ด๋ ๊ฒฐ๊ตญ Side Effect๋ฅผ ๋ฐ์์ํต๋๋ค. ๋๋ฌธ์ ๊ฐ์ ๋ฐํํ์ง ์๋ ํจ์๋, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์จ์ ํ๊ฒ ์งํค์ง ๋ชปํ๋ค๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋์ SideEffect๊ฐ ์๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ๋ค๋ฉด ๋ชจ๋ํ์ ์ฌ์ฌ์ฉ์ฑ์ ํ๊ธฐ๊ฐ ๋ ํธํ ๊ฒ์ด๊ณ , ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ํฅ์์ํต๋๋ค.
๋ถ๋ณ ๊ฐ์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํด์ผ ํ๋ค.
๋ถ๋ณ ๋ฐ์ดํฐ, Immutable Data๋ ํ ๋ฒ ์์ฑ๋๋ฉด ๋ณ๊ฒฝํ ์ ์๋ ๋ฐ์ดํฐ์ ๋๋ค. ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ํ์ฉํ๋ฉด ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ด ์ด๋ ค์์ง๋๋ค. ์ฌ๋ฌ ์ค๋ ๋์์ ๊ฒฝ์์ ์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ ค ํ๋ฉด ์ปจํ ์คํธ ์ค์์นญ๋ ๋ง์ด ์ผ์ด๋๊ณ , ์ค๋ ๋ ์ถฉ๋ ๋ฐฉ์ด ๊ธฐ๋ฒ๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ถ๋ณ ๊ฐ ์ฌ์ฉ์ ์ฝ๋์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๋์์ฑ์ ๋ค๋ฃจ๊ธฐ ์ฝ๊ณ ์์ธก ๊ฐ๋ฅํ ๋์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๋์ฌ ๋ฒ๊ทธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ถฐ ์ค๋๋ค.
Swift์์์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
์ค์ํํธ๋ ๊ณ ์ฐจํจ์, ํด๋ก์ ๋ฑ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. iOS, macOS ๋ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก๋ง ์์ฑํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค. ๋๋ฌธ์ ๊ฐ์ฒด ์งํฅ์ด๋ ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํจ๊ป ๊ณต์กดํ๋ ํํ๋ก ํ๋ก์ ํธ์ ๊ตฌํํด ๋ณผ ์ ์์ต๋๋ค.
'๐ iOS > ๐ ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] TLS/SSL (1) | 2024.10.28 |
---|---|
[iOS]Unit Test์ ์ฌ์ฉ (0) | 2024.02.05 |
[๋์์ธ ํจํด]Delegate Pattern (2) | 2024.01.27 |
[๋์์ธ ํจํด]Observer Pattern (1) | 2024.01.27 |