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๋ฅผ ์ฒ์ ์ ํ๋ ๊ฐ๋ฐ์๋ค์ ์ด ์ฐ์ฐ์์ ์ค์์ฑ๊ณผ ์ฌ์ฉ๋ฒ์ ๊ผญ ์์งํ๋ ๊ฒ์ด ์ข์๊ฒ ๊ฐ๋ค.
'๐ป ๊ฐ๋ฐ๊ณต๋ถ > Elixir' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Eric's Elixir] Elixir์์์ Quote์ Unquote ์ ๋ํด์ ์์๋ณด์! (0) | 2023.12.16 |
---|---|
[Eric's Elixir] ์ํฐ(Atom), ํํ(tuple) ์ ๋ํด ์์๋ณด๊ธฐ ๐งช (0) | 2023.11.04 |