์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ JavaScript ES6+ ์‘์šฉํŽธ

์ด ๊ฐ•์ขŒ๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ JavaScript ES6+์˜ ์‹œ๋ฆฌ์ฆˆ ๊ฐ•์ขŒ๋กœ ๋‹ค์–‘ํ•œ ์‘์šฉ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

(4.9) ์ˆ˜๊ฐ•ํ‰ 119๊ฐœ

์ˆ˜๊ฐ•์ƒ 3,348๋ช…

๋‚œ์ด๋„ ์ค‘๊ธ‰์ด์ƒ

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์ƒˆ์†Œ์‹

1 ๊ฐœ

  • MDU ์œ ์ธ๋™๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ๏ฝฅ

    ์ˆ˜์ •๋จ

    ใ€Ž์ฝ”ํ‹€๋ฆฐ ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์ดํ„ฐ๋ ˆ์ด์…˜ใ€์€ ใ€Ž๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€์˜ ๋ถ€๋ก์œผ๋กœ, ๋ณธ์„œ์˜ ์ผ๋ถ€ ๋‚ด์šฉ์„ ์ฝ”ํ‹€๋ฆฐ ์–ธ์–ด์— ํŠนํ™”ํ•˜์—ฌ ํ’€์–ด๋‚ธ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํŠน์ • ์–ธ์–ด์— ๊ตญํ•œ๋˜์ง€ ์•Š๋Š” ์–ธ์–ด ๋…๋ฆฝ์ ์ธ ๊ฐœ๋…์œผ๋กœ, ํ˜„๋Œ€์˜ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋ก ์ด์ž ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

    ๋ณด๋Ÿฌ๊ฐ€๊ธฐ:
    https://github.com/marpple/kotlin-multi-paradigm-iteration

    ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์€ ์ดํ„ฐ๋ ˆ์ด์…˜(Iteration)์— ๋Œ€ํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ, ํ•จ์ˆ˜ํ˜•, ๋ช…๋ นํ˜• ๊ฐœ๋…์„ ํ†ตํ•ฉํ•˜๊ณ , ์ด๋ฅผ ์œ ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๊ทœ์•ฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ใ€Ž๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€์—์„œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•จ์ˆ˜ํ˜•ยท๋ช…๋ นํ˜•ยท๋ฆฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑยท๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์กฐํ•ฉํ•ด ํ™œ์šฉํ•˜๋Š” ์‚ฌ๋ก€๋“ค์„ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด์ธ ์ฝ”ํ‹€๋ฆฐ(Kotlin)์˜ ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์ดํ„ฐ๋ ˆ์ด์…˜์„ ์ค‘์‹ฌ์œผ๋กœ ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์‘์šฉ ๋Šฅ๋ ฅ์„ ๋”์šฑ ํ™•์žฅํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

    ์ฝ”ํ‹€๋ฆฐ์€ ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์˜ค๋ผ์ผ๋ฆฌ ๋ฏธ๋””์–ด์˜ ๋ถ€์‚ฌ์žฅ์ด์ž ์—ฌ๋Ÿฌ ๊ธฐ์ˆ  ์„œ์ ์˜ ์ €์ž์ธ ๋งˆ์ดํฌ ๋ฃจํ‚ค๋ฐ์Šค๋Š” ์ตœ๊ทผ ๊ทธ์˜ ๊ธ€์—์„œ "์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜ํ˜•, ๊ฐ์ฒด ์ง€ํ–ฅ, ๋ช…๋ นํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ œ๊ณตํ•˜๋Š” ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค"๋ฉด์„œ "๋งŽ์€ ํˆด๋“ค์ด ๊ฐœ์„ ๋˜์—ˆ๊ณ  ์ด์ œ ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์ž˜ ์‚ฌ์šฉํ• ์ง€๋ฅผ ๋ฐฐ์šธ ์ฐจ๋ก€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ๋Š” ์˜ค๋žซ๋™์•ˆ ๊ฐ๊ฐ ํŠน๋ณ„ํžˆ ๊ณ ์œ ํ–ˆ๊ณ  ์‹ฌ์ง€์–ด ๊ฐˆ๋“ฑ ์†์— ์žˆ๋˜ ํŒจ๋Ÿฌ๋‹ค์ž„๋“ค์„ ์„ž์–ด์•ผ ํ•  ๋•Œ๋‹ค"๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์ด ๊ฐ–์ถฐ์ง„ ์ง€๊ธˆ, ์–ด๋А ํ•œ์ชฝ ํŒจ๋Ÿฌ๋‹ค์ž„๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด์ฉŒ๋ฉด ํฐ ๊ธฐํšŒ๋ฅผ ๋†“์น˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ์ค‘์—๋Š” ํ•จ์ˆ˜ํ˜•์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ธํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ , ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋” ์šฐ์„ธํ•œ ๊ฒฝ์šฐ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์€ ์ด์ œ ๋” ์ด์ƒ ํ•จ์ˆ˜ํ˜•์ด ์ข‹์€์ง€, ๊ฐ์ฒด ์ง€ํ–ฅ์ด ์ข‹์€์ง€, ์ •์  ํƒ€์ž…์ด ์ข‹์€์ง€, ๋™์  ํƒ€์ž…์ด ์ข‹์€์ง€ ๋…ผ์Ÿํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ธ์–ด๋ฅผ ๋งŒ๋“ค๊ณ  ํ‘œ์ค€์„ ์ •์˜ํ•˜๋Š” ๋‹จ์ฒด์™€ ๊ธฐ์—…๋“ค์ด ์ด๋ฏธ ํ•˜๋‚˜์˜ ์–ธ์–ด์™€ ํ”Œ๋žซํผ์—์„œ ์—ฌ๋Ÿฌ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ง€์›ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ์—ˆ๊ณ , ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ, ์‹ฌ์ง€์–ด๋Š” ํ•˜๋‚˜์˜ ํ•จ์ˆ˜ ์•ˆ์—์„œ๋„ ์—ฌ๋Ÿฌ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์กฐํ•ฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ฝ”ํ‹€๋ฆฐ์€ Iterable, Iterator, Sequence, Flow, Channel ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์ง€์—ฐ ํ‰๊ฐ€(lazy evaluation)์™€ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์ •๊ตํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ํ™•์žฅ ํ•จ์ˆ˜์™€ ํ’๋ถ€ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ—ฌํผ ํ•จ์ˆ˜๊ฐ€ ๊ฒฐํ•ฉ๋˜์–ด, ๋‹จ์ˆœํ•œ ๋ฆฌ์ŠคํŠธ ์ˆœํšŒ ์ด์ƒ์˜ ๋‹ค์–‘ํ•œ ํŒจํ„ด์„ ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด๋„ ๋†’์€ ์ˆ˜์ค€์˜ ๋ฆฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ์„ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ ํŠน์œ ์˜ ์ •๊ตํ•˜๊ฒŒ ๋งž๋ฌผ๋ฆฐ ๊ตฌ์กฐ์™€ ์œ ์—ฐํ•œ ํ™•์žฅ์„ฑ, ํ’๋ถ€ํ•œ ํŽธ์˜ ๊ธฐ๋Šฅ๋“ค์€ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งŽ์€ ์˜๊ฐ๊ณผ ์ฆ๊ฑฐ์›€์„ ์•ˆ๊ฒจ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์ผ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ฃผ๋Š” ์ฆ๊ฑฐ์›€์„ ์˜จ์ „ํžˆ ๋ˆ„๋ฆฌ๊ณ  ์žˆ์ง€ ๋ชปํ•œ ๊ฒƒ์ผ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

    ใ€Ž๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€์˜ ๋ถ€๋ก ์ปจํ…์ธ ์ธ ใ€Ž์ฝ”ํ‹€๋ฆฐ ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์ดํ„ฐ๋ ˆ์ด์…˜ใ€์—์„œ๋Š” ใ€Ž๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€์˜ ์ผ๋ถ€ ๋‚ด์šฉ์„ ์ฝ”ํ‹€๋ฆฐ ์ดํ„ฐ๋Ÿฌ๋ธ”, ์ดํ„ฐ๋ ˆ์ดํ„ฐ, ์‹œํ€€์Šค๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅยทํ•จ์ˆ˜ํ˜•ยท๋ช…๋ นํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ด€์ ์œผ๋กœ ํ’€์–ด๋ƒ…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ์„ค๊ณ„๋œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ์™€ ๋ช…๋ นํ˜• ์Šคํƒ€์ผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์‹œํ€€์Šค์˜ ๊ด€๊ณ„๋ฅผ ์•Œ์•„๋ณด๊ณ , ํ•จ์ˆ˜ํ˜• ํ™•์žฅ ํ•จ์ˆ˜๋กœ ์‹œํ€€์Šค์ด์ž ์ดํ„ฐ๋ ˆ์ดํ„ฐ์ธ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•จ์ˆ˜ํ˜• ํ™•์žฅ ํ•จ์ˆ˜๋กœ ์—ฐ์‚ฐ์„ ์Œ“์€ ์‹œํ€€์Šค๋ฅผ ๋ช…๋ นํ˜•์œผ๋กœ ๋‹ค๋ฃจ์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด์„œ, ์ฝ”ํ‹€๋ฆฐ ์ดํ„ฐ๋ ˆ์ด์…˜์ด ์ง€๋‹Œ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ „ํ™˜ ๋Šฅ๋ ฅ์„ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.

    ์•„์šธ๋Ÿฌ ์‹œํ€€์Šค์™€ ์ดํ„ฐ๋ ˆ์ดํ„ฐ์˜ ์ง€์—ฐ ํ‰๊ฐ€๋ฅผ ๊นŠ์ด ํŒŒ์•…ํ•˜๊ณ , LISP์˜ ์ฒ ํ•™์„ ์ฐจ์šฉํ•ด ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์œตํ•ฉํ•˜๋Š” ์‹œ๊ฐ์„ ํƒ๊ตฌํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ•๋“ค์˜ ์‹ค์ „ ์‘์šฉ๋ ฅ์„ ๋†’์ด๋Š” ๋‚ด์šฉ๋„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ ์—ฐํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ํšจ์œจ์ ์ด๋ฉฐ ์ •ํ™•ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ํƒ๊ตฌํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด ์ฝ”ํ‹€๋ฆฐ์˜ ๋‹ค์–‘ํ•œ ๊ฐ€๋Šฅ์„ฑ์„ ์‹ค๊ฐํ•˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฆ๊ฑฐ์›€์„ ํ•œ์ธต ๊นŠ์ด ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    0

โ‚ฉ44,000