Вы также можете сделать это с несколькими функциональными предложениями:
defmodule Example do
def color("Apple" = name), do: as_map(name, "Red", "kg")
def color("Pear" = name), do: as_map(name, "Green", "each")
def color(name), do: as_map(name, "black", "kg")
def as_map(name, color, unit), do: %{name: name, color: color, unit: unit}
end
Использование:
iex(1)> Example.color("Apple")
%{color: "Red", name: "Apple", unit: "kg"}
iex(2)> Example.color("Pear")
%{color: "Green", name: "Pear", unit: "each"}
iex(3)> Example.color("Orange")
%{color: "black", name: "Orange", unit: "kg"}