one 运行 a 同名函数怎么用?

How would one run a functions with same name?

我是新的 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 的基本调用,但我如何 运行 这些函数?

谢谢

您给出的示例没有定义两个同名函数,而是定义了一个多子句函数。大致相当于:

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 中,不可能定义两个具有相同名称和参数的函数。