我是新的Elixir并且非常享受它。当我尝试使用同名函数时,我碰壁了。这是一个例子
defmodule ChangeName do
def convert(:captilize, name), do: String.capitalize(name)
def convert(:lower, name), do: String.downcase(name)
end
我正在使用 iex 以及ChangeName.convert.captilize的基本调用但是如何运行这些函数?
由于
答案 0 :(得分:6)
您提供的示例未定义具有相同名称的两个函数,而是单个多重函数。它大致相当于:
defmodule ChangeName do
def convert(conversion, name) do
case conversion do
:capitalize -> String.capitalize(name)
:lower -> String.downcase(name)
end
end
end
并据此调用:
ChangeName.convert(:capitalize, "john")
ChangeName.convert(:lower, "JOHN")
实际上在Erlang中,不可能定义两个具有相同名称和arity的函数。