간단한 프로세스를 실행하고 메시지를 받아 처리하는 문제였다. 책을 번역하면서 프로세스의 기본 동작에 대해서는 몇 번인가 훑어본 적이 있어서 크게 어렵지는 않았다. 가이드에서는 익명 함수를 써서 띄워야 한다는 듯, 다른 함수를 만들어 띄우니 start
외의 함수는 defp
로 정의해야 한다고 경고를 띄우던데, 이유는 알겠지만 저 긴 함수를 익명 함수 안에 넣자니 그것도 또 난감한 일이라 일단 이대로 만족.
defmodule TakeANumber do
def process(state) do
receive do
{:report_state, pid} ->
send(pid, state)
process(state)
{:take_a_number, pid} ->
new_state = state + 1
send(pid, new_state)
process(new_state)
:stop ->
:ok
_ ->
process(state)
end
end
def start() do
spawn(TakeANumber, :process, [0])
end
end
추기: 다른 사람들의 답을 참고해서 해봤는데, spawn
호출을 spawn(fn -> process(0) end)
로 바꾸면 process
함수를 프라이빗으로 바꿔도 되더라. 이것도 방법일 것 같다. 👍
'호두나무 공방 > Exercism in Elixir' 카테고리의 다른 글
Resistor Color - Exercism in Elixir (0) | 2022.04.13 |
---|---|
Wine Cellar - Exercism in Elixir (0) | 2022.04.12 |
DNA Encoding - Exercism in Elixir (0) | 2022.04.06 |
Name Badge - Exercism in Elixir (0) | 2022.04.06 |
RPG Character Sheet - Exercism in Elixir (0) | 2022.04.04 |