First commit
This commit is contained in:
commit
1dba0af064
36 changed files with 1065 additions and 0 deletions
35
chapter5/calculator_refactor.ex
Normal file
35
chapter5/calculator_refactor.ex
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
defmodule Calculator do
|
||||
def start do
|
||||
spawn(fn -> loop(0) end)
|
||||
end
|
||||
|
||||
defp loop(current_value) do
|
||||
new_value =
|
||||
receive do
|
||||
message -> process_message(current_value, message)
|
||||
end
|
||||
|
||||
loop(new_value)
|
||||
end
|
||||
|
||||
defp process_message(current_value, {:value, caller}) do
|
||||
send(caller, {:response, current_value})
|
||||
current_value
|
||||
end
|
||||
|
||||
defp process_message(current_value, {:add, value}) do
|
||||
current_value + value
|
||||
end
|
||||
|
||||
defp process_message(current_value, {:sub, value}) do
|
||||
current_value - value
|
||||
end
|
||||
|
||||
defp process_message(current_value, {:mul, value}) do
|
||||
current_value * value
|
||||
end
|
||||
|
||||
defp process_message(current_value, {:div, value}) do
|
||||
current_value / value
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue