多个defs上的默认冲突

时间:2016-07-15 12:26:07

标签: elixir

  def request(method \\ :get, path) do
  end

  def request(method \\:get, path, params) do
  end

编译引发

def request/3 defaults conflicts with def request/2

我不知道为什么我不能有两个参数模式匹配的def。

1 个答案:

答案 0 :(得分:3)

request("post", "test")时的成像情况。 post是路径的方法或名称以及test的相同故事 - 是路径还是参数? 我想最好的解决方案是简单地使用这个request方法和三个参数,并使用params作为可选参数。

def request(path, method \\ :get, params \\ nil) do
    #logic
end

然后你可以在这个函数下面使用私有函数,其中一个使用guard when is_nil(params)而另一个没有它。