Seize your moment! ๐Ÿ‘พ

์•ˆ๋…•ํ•˜์„ธ์š”. Eric์ž…๋‹ˆ๋‹ค. ์ œ ๋ธ”๋กœ๊ทธ์— ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœ๊ณต๋ถ€/Elixir

[Eric's Elixir] ํ•€ ์—ฐ์‚ฐ์ž๋ž€? ๐Ÿ“

Eric_ko 2023. 9. 24. 00:50


Elixir ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ, JS์—์„œ๋Š” ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์žˆ์–ด์„œ ๋”ฐ๋กœ ์ •๋ฆฌํ•˜๊ณ ์ž ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.

Elixir์—์„œ ํ•€(^) ์—ฐ์‚ฐ์ž๋ž€?

Elixir์—์„œ๋Š” ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€๋Š” ๋‹ค๋ฅด๊ฒŒ = ์—ฐ์‚ฐ์ž๊ฐ€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋Œ€์‹ , = ์—ฐ์‚ฐ์ž๋Š” ํŒจํ„ด ๋งค์นญ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
์ด ๋•Œ๋ฌธ์—, Elixir์—์„œ ์ด๋ฏธ ํ• ๋‹น๋œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ณ ์ •ํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ๊ฐ’๊ณผ ๋‹ค๋ฅธ ํŒจํ„ด์„ ๋งค์นญํ•˜๊ณ ์ž ํ•  ๋•Œ ํŠน๋ณ„ํ•œ ์—ฐ์‚ฐ์ž๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ,
๊ทธ ๊ฒƒ์ด ๋ฐ”๋กœ ํ•€(^) ์—ฐ์‚ฐ์ž์ด๋‹ค.

1. ํŒจํ„ด ๋งค์นญ์—์„œ์˜ ๊ฐ’ ๊ณ ์ •

ํŒจํ„ด ๋งค์นญ์€ ๋ณ€์ˆ˜๋ฅผ ๊ฐ’์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ, ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฏธ ๊ฐ’์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋œ ์ƒํƒœ์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์ด๋‚˜ ํŒจํ„ด๊ณผ ๋งค์นญํ•˜๋ ค๋ฉด ํ•€ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

x = 1     # x ๋ณ€์ˆ˜์— 1์ด ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
^x = 2    # ์˜ค๋ฅ˜! x๋Š” ์ด๋ฏธ 1์˜ ๊ฐ’์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
^x = 1    # ์„ฑ๊ณต! x์˜ ํ˜„์žฌ ๊ฐ’(1)๊ณผ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค.

2. ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ์˜ ๊ฐ’ ๊ณ ์ •

ํ•จ์ˆ˜ ๋‚ด์—์„œ ํ•€ ์—ฐ์‚ฐ์ž๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ณ ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ๊ฐ’์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

defmodule Test do
  def check_value(^x) when x == 1, do: "Matched"
  def check_value(_), do: "Not Matched"
end

IO.puts(Test.check_value(1))  # ์ถœ๋ ฅ: "Matched"
IO.puts(Test.check_value(2))  # ์ถœ๋ ฅ: "Not Matched"

3. case, with ๊ตฌ๋ฌธ์—์„œ์˜ ๊ฐ’ ๊ณ ์ •

Elixir์˜ case์™€ with ๊ตฌ๋ฌธ์—์„œ๋„ ํ•€ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๊ณ ์ •ํ•˜๊ณ  ๊ทธ ๊ฐ’์„ ๋‹ค๋ฅธ ํŒจํ„ด๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

x = 2
case 2 do
  ^x -> "Matched"
  _ -> "Not Matched"
end

๊ฒฐ๋ก 

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