В введении Elixir к GenServer клиентский API запускает сервер с аргумент :ok
def start_link(opts \\ []) do
GenServer.start_link(__MODULE__, :ok, opts)
end
И серверная функция init
требует, чтобы ее аргумент был :ok
def init(:ok) do
{:ok, HashDict.new}
end
Какой смысл проходить и проверять :ok
? Было бы иначе, если бы мы опустили это и вместо этого написали что-то вроде
def start_link(opts \\ []) do
GenServer.start_link(__MODULE__, nil, opts)
end
def init(_) do
{:ok, HashDict.new}
end
?
:ok
илиnil
. Прохождение:ok
и наличиеinit(:ok)
может быть просто дополнительной проверкой через сопоставление с образцом - person AbM   schedule 12.11.2015