[Elixir] Enum ๋ชจ๋“ˆ

[์›๋ณธ ๋งํฌ]

Enum ๋ชจ๋“ˆ์€ ๋ง ๊ทธ๋Œ€๋กœ Enumeration์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•˜๋Š” ํ•„์ˆ˜ ๋ชจ๋“ˆ์ด๋‹ค.

๊ทธ์ค‘ ์ž์ฃผ ์‚ฌ์šฉํ• ๋งŒํ•œ ๊ฒƒ์„ ์œ„์ฃผ๋กœ ๋Œ€๊ฐ• ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค.


Enum.join
์ด๊ฑด ๋ฆฌ์ŠคํŠธ ๊ฐ ํ•ญ๋ชฉ์„ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ฆฌ์ŠคํŠธ, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ์—ฐ๊ฒฐํ• ๋•Œ ์‚ฌ์ด์— ๋ผ์›Œ๋„ฃ์„ ๊ตฌ๋ถ„์ž๋‹ค. image

image

image


Enum.each
์ด๊ฑด ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์˜ forEach ๋“ฑ๊ณผ ๋™๋“ฑํ•œ ํ•จ์ˆ˜๋‹ค.

์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋Œ๋ฉด์„œ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ฐ˜๋ณตํ•  ๋ฆฌ์ŠคํŠธ, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ณด๋‚ด์„œ ํ˜ธ์ถœํ•  ์ฝœ๋ฐฑํ•จ์ˆ˜๋‹ค. image

image

image


Enum.map
๋‹ค๋ฅธ ์–ธ์–ด๋“ค์˜ map๊ณผ ๋™์ผํ•˜๋‹ค. ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋Œ๋ฉด์„œ, map ํ˜ธ์ถœํ•˜๊ณ  ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ๋ฐ›์•„ ์ƒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ ๊ฐ’์— 2๋ฅผ ๊ณฑํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. image

image

image


Enum.filter
์ด๊ฑด ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํ•„ํ„ฐ, ๊ฑธ๋Ÿฌ๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.
์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  ์ƒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. image

image

image


Enum.reduce
reduce ๊ฐ์ถ•ํ•œ๋‹ค๋Š” ๋œป์ธ๋ฐ, ์ด๋ฆ„๋งŒ ๋ด์„œ๋Š” ์™€๋‹ฟ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ƒฅ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉด์„œ ๊ฐ’์„ ์Œ“์•„๋‚˜๊ฐ€๋Š” ํ•จ์ˆ˜๋‹ค. ํ•ฉ๊ณ„๊ฐ™์€๊ฑธ ๊ตฌํ•˜๊ธฐ ์ข‹๋‹ค.

์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ฆฌ์ŠคํŠธ, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ์ดˆ๊ธฐ๊ฐ’, ์„ธ๋ฒˆ์งธ๊ฐ€ ์ฝœ๋ฐฑํ•จ์ˆ˜๋‹ค.
์ฝœ๋ฐฑ์€ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ (์š”์†Œ๊ฐ’, ๋ˆ„๊ณ„)๋ฅผ ๋ฐ›๊ณ , ์ฝœ๋ฐฑ์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ๋‹ค์Œ์— ์ „๋‹ฌ๋  ๋ˆ„๊ณ„๊ฐ€ ๋œ๋‹ค. image

image

image


Enum.sort
์ •๋ ฌํ•จ์ˆ˜๋‹ค. ์ฝœ๋ฐฑ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. image

image

image

์ด์™ธ์—๋„ any?, all?, empty?, concat, count, split, slice, uniq... ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•˜๊ณ  ์œ ์šฉํ•œ ํ•จ์ˆ˜๋“ค์ด ์žˆ์œผ๋‹ˆ
https://hexdocs.pm/elixir/Enum.html
๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.


์ฐธ์กฐ
https://www.tutorialspoint.com/elixir/elixir_enumerables.htm
https://hexdocs.pm/elixir/Enum.html