【问题标题】:How would one run a functions with same name?如何运行具有相同名称的函数?
【发布时间】:2015-03-05 03:41:18
【问题描述】:

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

谢谢

【问题讨论】:

标签: elixir


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多