์ด ๊ฐ์๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ์ฒ์์ธ ๊ฐ๋ฐ์๋ค์ ๋์์ผ๋ก, ๊ธฐ์กด์ ์ฌ๊ณ ์ฒด๊ณ๋ฅผ ์กฐ๊ธ์ฉ ๋ฐ๊ฟ๋๊ฐ๋ ๋ฐ์ ๋์์ ๋๋ฆฌ๊ณ ์ ์ด๋ก ๊ณผ ์ค์ต์ผ๋ก ๊ตฌ์ฑํ ๊ฐ์์ ๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ ๊ฐ๋
Swift๋ฅผ ์ฌ์ฉํ ์ค๋ฌด ํ๋ก์ ํธ ๊ตฌํ
๊ธฐ์กด ํ๋ก๊ทธ๋จ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ๋ก ๋ฆฌํฉํ ๋ง
๋์์ฑ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
์ ๊ฐ์ ์๊ฐ ๋์์์ ํตํด ์ด๋ค ๋ด์ฉ์ ๋ฐฐ์ฐ๊ฒ ๋ ์ง ๋ฏธ๋ฆฌ ํ์ ํ์ธ์.
ํํธ1 : ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ํํธ2 : ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ์ค์ต์ ํตํด ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ ํํธ3 : ์ด๋ฏธ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ณ๊ฒฝํด๋ณด๊ธฐ ํํธ4 : UI๋ฅผ ์ ์ฉํ๋ iOS์ฑ ๊ฐ๋ฐ
์ด์ ๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋ฐฐ์ฐ๊ณ ์ถ์ดํ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
์ต๊ทผ ๋ช ๋ ๊ฐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, Functional Programming(FP)์ ๋ํ ๊ด์ฌ์ด ๋ฌด์ฒ์ด๋ ๋์์ก์ต๋๋ค. ๊ฐ์ข ๋ถ์ผ์ ๋ฐ์ ์ด๋ ์ธ๋ฏธ๋์ ๊ฐ์ ๋ FP์ ๋ํด ๋ ผํ๋ ๊ฒ์ ํํ ํ๊ฒฝ์ด ๋์์ต๋๋ค. ํนํ ๊ธฐ์กด ์ฝ๋๋ฅผ FP ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ ๋ชจ์ต์ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ด ์ข์ ๊ฒ์ ๋๋ฆฌ๋๋ฆฌ ์ฐ๋ผ๋ ์ด์ผ๊ธฐ๋ ๋ง์ด ๋ค๋ฆฝ๋๋ค. ํ์ง๋ง ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์ต์ํ ์ํฉ์์, ์๋ก์ด ํจ๋ฌ๋ค์์ผ๋ก ๋์ด๊ฐ๋ ๋ฐ์๋ ๋ง์ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ ์ด๋ค ์๋ก์ด ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๊ณ ๊ทธ ๋ฌธ๋ฒ์ ์ตํ์ ์ฐ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ ๋๋ค.ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ผ๋ก ๋์ด๊ฐ๋ ๊ฒ์ ์ ์ด๋ ค์ธ๊น?
ํ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ์ง ์ธ์ ์ฒด๊ณ(ํจ๋ฌ๋ค์)์ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๊ฒ ๋ถํฐ ์์ค์ฝ๋๋ฅผ ์ง๊ธฐ๊น์ง ๋ชจ๋ ๊ณผ์ ์ ๊น๊ฒ ๊ด์ฌํฉ๋๋ค. ์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์์์ ํ์์ ํ๋ก๊ทธ๋๋ฐ ํด์จ ์ฌ๋์ด๋ผ๊ณ ๊ฐ์ ํ ๋, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์๋กญ๊ฒ ๋ฐฐ์ฐ๋ ๋ฐ ์์ด์ ์ด๋ฐ ์ด๋ ค์์ด ๋ฐ๋ฅผ ์ ์์ต๋๋ค:
- ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๊ฒ ์์ฒด๊ฐ ์ด์ํ๊ฒ ๋๊ปด์ง๋๋ค. ์กฐ๊ธ ๋ ๊ฐ๋ฐ์ ์นํ์ ์ผ๋ก ํํํ์๋ฉด, state ์์ด ํ๋ก๊ทธ๋๋ฐ์ ํ๋ผ๋ ์ค๋ช ์์ฒด๊ฐ ๋๋ฌด๋๋ ์ด์ํฉ๋๋ค.
- FP์์ ๋ฑ์ฅํ๋ Currying ์ด๋ผ๋ ๊ฐ๋ ๋ ์ด์ํฉ๋๋ค. ํจ์๋ฅผ ๋ง๋๋ ํจ์๋ฅผ ๋ง๋๋ ํจ์๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ(์คํ ์๋)์ด ๋๋์ฒด ๋ฌด์จ ๋ง์ธ์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ์ง ์์ผ๋ฉด์ ํ๋ก๊ทธ๋จ์ ํ๋์ ์ ์ดํ๋ค๋ ๊ฒ์ด ์ด์ํฉ๋๋ค. ๊ทธ๋ฅ ๋ค ์ด์ํ๊ฒ ๋๊ปด์ง๋๋ค.
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
Swift ์ธ์ด์ ์ต์ํ ๋ถ
ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์งํ๋ฅผ ์ดํดํ๊ณ ์ถ์ ๋ถ
์ค๋ฌด ํ๋ก์ ํธ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ฉํ๊ณ ์ถ์ ๋ถ
๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ ํํ๊ณ ์ถ์ ๋ถ
157
๋ช
์๊ฐ์
10
๊ฐ
์๊ฐํ
2
๊ฐ
๋ต๋ณ
4.5
์
๊ฐ์ ํ์
1
๊ฐ
๊ฐ์
์ ์ฒด
29๊ฐ โ (1์๊ฐ 25๋ถ)
๊ฐ์ ์๊ฐ
02:57
FizzBuzz(FP) - 1
05:33
FizzBuzz(FP) - 2
06:54
Low-High (FP) -1
12:10
Low-High (FP) - 2
06:42