๋ฐ์ํ
๐ ์ค๋ ๋ฐฐ์ด ๊ฒ
โ๏ธ ์ผ๊ธ๊ฐ์ฒด, ๊ณ ์ฐจํจ์
์ผ๊ธ๊ฐ์ฒด = ๋ณ์์ ํ ๋น ๊ฐ๋ฅ(ํจ์ํํ์), ๋ค๋ฅธํจ์์ parameter๋ก ์ ๋ฌ ๊ฐ๋ฅ, ๋ค๋ฅธํจ์์ ๊ฒฐ๊ณผ๋ก return ๊ฐ๋ฅ
๊ณ ์ฐจํจ์ = ํจ์๋ฅผ parameter๋ก ๋ฐ๊ฑฐ๋, ํจ์๋ฅผ returnํ๋ ํจ์
โ๏ธ ๋ด์ฅ ๊ณ ์ฐจํจ์ : filter, map, reduce
filter = ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ ์์๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋
map = ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋์ผํ ํจ์๋ฅผ ์ ์ฉํด ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋
reduce = ๋์ฐ๊ธฐ์ ๊ณ์ฐ์ ๋์ ํ ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ํ ๋นํด ๋ฐํํ๋ ๋ฉ์๋
โ๏ธ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์
condition? exprIfTrue : exprIfFalse ํํ๋ก ์ฌ์ฉํ๋ค.
condition(์กฐ๊ฑด)์ด true์ด๋ฉด, exprIfTrue์ ๋ฐํํ๋ฉฐ, ์กฐ๊ฑด์ด false์ด๋ฉด exprIfFalse๋ฅผ ๋ฐํํ๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
โ๏ธ caller, callbackํจ์
๊ณ ์ฐจ ํจ์(higher order function)๋ ํจ์๋ฅผ ์ธ์(argument)๋ก ๋ฐ๊ฑฐ๋ ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์๋ฅผ ๋งํ๋ค. ์ด ๋ ์ธ์(arguments)๋ฅผ ๋ฐ๋ ํจ์๋ฅผ caller, ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์๋ฅผ callback function(์ฝ๋ฐฑํจ์)๋ผ๊ณ ํ๋ค. ๋ง๊ทธ๋๋ก ๋ถ๋ฅด๋ ํจ์์ ๋ถ๋ฆฌ๋ ํจ์! ์ฐธ๊ณ ๋ก, caller๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ฐฑ ํจ์์ ์คํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์๋ ์๊ณ , ์ฌ๋ฌ ๋ฒ ์คํํ ์๋ ์๋ค.
โ๏ธ ์ปค๋ฆฌ ํจ์(Curry Function)
ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ ์ค 'ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์'๋ง์ ์ผ์ปซ๋ ์ฉ์ด์ด๋ค. ๊ณ ์ฐจํจ์์ ์กฐ๊ฑด์ด 1) ํจ์๋ฅผ ์ธ์(argument)๋ก ๋ฐ๊ฑฐ๋ 2)ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์์ด๊ธฐ ๋๋ฌธ์, ๊ณ ์ฐจ ํจ์๊ฐ ์ปค๋ฆฌ ํจ์๋ฅผ ํฌํจํ๋ ๊ด๊ณ๋ผ๊ณ ํ ์ ์๋ค.
โ๏ธ arguments
ํจ์์ ์ ๋ฌ๋๋ ์ธ์๋ก ์ฐ๋ '๋ฐฐ์ด ํํ์ ๊ฐ์ฒด' , ํ์์ ๋ฐ๊ธฐ๋ก ์ ์ธ๋ ๊ฒ๋ณด๋ค ๋ง์ ์ธ์๋ก ํจ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค!
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ ๋ด์ฅ ๊ณ ์ฐจํจ์ ์ฌํ
์ค๋ ์ ๋ฆฌํ filter, map, reduce ์ธ์๋ Each, find, sort, some, every ์ ๋ํด์๋ ์ ๋ฆฌํด์ ๋ธ๋ก๊น ํด์ผ๊ฒ ๋ค!
โ๏ธ ์ต๋ช ํจ์
์ด์ฉ ๋๋ ์ด๋ฆ์ ๋ถ์ด๊ณ , ์ด์ฉ ๋๋ ์ต๋ช ์ผ๋ก ํจ์๋ฅผ ์ ์ธํด๋ ๋๋๊ฑด์ง, ์ ์ฐ๋ ๊ฑด์ง, ๋ญ๊ฐ ๋ ์ข์ ๋ฐฉ๋ฒ์ธ์ง ์ฐพ์๋ด์ผ๊ฒ ๋ค.
โ๏ธ ์ปค๋ง/์ปค๋ง ํจ์์ ๊ด๊ณ, ์ปค๋ง/ํด๋ก์ ์ ์ฐจ์ด ์ดํดํ๊ธฐ
์ปค๋ง๊ณผ ์ปค๋ง ํจ์๊ฐ ๋น์ทํ ๊ฐ๋ ์ ๋ฐํ์ผ๋ก ํ๋ค๋ ๊ฒ์ ์ด๋ ดํ์ด ์๊ฒ ๋๋ฐ ์ ํํ ์ด๋ค ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋์ง, ์ด๋ค ๊ด๋ จ์ด ์๋ ์ง์ ๋ํด์ ์ข ๋ ์๊ฐํด ๋ณด๋ ค๊ณ ํ๋ค. ์ด์ ๋ฐ๋๋ก ์ปค๋ง๊ณผ ํด๋ก์ ๋ ์ด๋ค ๋ฉด์์ ๋ค๋ฅธ์ง์ ๋ํด์๋ ์ดํดํด๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.
โ๏ธMapReduce Model์ ๋ํด ์์๋ณด๊ธฐ
๋งต ๋ฆฌ๋์ค๋ map, reduce ๊ณผ์ ์ ๊ฑฐ์น๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ๊ฐ๋ ์ด๋ผ๋ ์ ๋๋ก๋ง ์๊ณ ์๋๋ฐ, ์ค๋ ๋ฐฐ์ ๋ ๋ด์ฅ ๊ณ ์ฐจํจ์ map๊ณผ reduce๋ฅผ ๋ฐํ์ผ๋ก ๋งต๋ฆฌ๋์ค์ ๋ํด ๊ฒ์ํด ๋ณด๊ณ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค.
โ๏ธ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ(declarative programming) vs ์ ์ฐจํ ํ๋ก๊ทธ๋๋ฐ(imperative programming)
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ฐจํ ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด์ ๋ํด ๊ฒ์ํด๋ณด๊ณ , ์ดํด์ ๋์์ด ๋ ๊ฒ ๊ฐ์ ๋งํฌ๋ค์ ์ ๋ฆฌ๋ง ํด๋์๋๋ฐ, ๋ด์ผ์ ๋ฐฐ์ด ๋ฉ์๋์ ๊ด๋ จ ์ง์ด ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด๋ฅผ ์ดํดํด๋ณด๋ ค๊ณ ํ๋ค.
โ๏ธ ์ค๋์ ๋ฏ์ ๊ฐ๋ ์ด๋ ์ฉ์ด๋ค์ด ๋ง์ด ๋์์ ๊ณ์ ํ๊ธฐํด๋๊ฑธ ์ฐพ์๋ณด๋ฉฐ ๊ณต๋ถํ ๊ฒ ๊ฐ๋ค. ๊ทธ๋งํผ ํ๊ธฐ์ ์ค์์ฑ์ ๋ํ๋ฒ ๋๋ผ๊ธฐ๋ ํ๊ณ , ์๋ก์ด ๊ฐ๋ ๋ค์ด ์ต์ํด์ง๋๊น์ง ๋ฐ๋ณตํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋ค๐ฆ
๋ฐ์ํ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
201223_TIL (2) | 2020.12.24 |
---|---|
201222_TIL (0) | 2020.12.23 |
201218_TIL (2) | 2020.12.19 |
201217_TIL (0) | 2020.12.18 |
201216_TIL (0) | 2020.12.17 |
๋๊ธ