Код IT
← Каталог

Функции и процессы в Elixir — Мини-шаблон модуля для реальных задач

Фрагмент из «Функции и процессы в Elixir»: Мини-шаблон модуля для реальных задач.

Elixir main.ex
defmodule MyApp.Feature do
  @moduledoc "Короткое описание модуля."

  @doc "Публичный вход в сценарий."
  @spec run(map()) :: {:ok, map()} | {:error, atom()}
  def run(input) when is_map(input) do
    with {:ok, normalized} <- normalize(input),
         {:ok, result} <- execute(normalized) do
      {:ok, result}
    end
  end

  defp normalize(input), do: {:ok, input}
  defp execute(data), do: {:ok, data}
end
defmodule MyApp.Feature do
  @moduledoc "Короткое описание модуля."

  @doc "Публичный вход в сценарий."
  @spec run(map()) :: {:ok, map()} | {:error, atom()}
  def run(input) when is_map(input) do
    with {:ok, normalized} <- normalize(input),
         {:ok, result} <- execute(normalized) do
      {:ok, result}
    end
  end

  defp normalize(input), do: {:ok, input}
  defp execute(data), do: {:ok, data}
end