Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 默认值在几个def上发生冲突_Elixir - Fatal编程技术网

Elixir 默认值在几个def上发生冲突

Elixir 默认值在几个def上发生冲突,elixir,Elixir,论编辑 def request(method \\ :get, path) do end def request(method \\:get, path, params) do end 我不明白为什么我不能有两个参数模式匹配def。当出现请求(“post”,“test”)时,会出现成像情况。post是方法名还是路径名,与test是同一个故事-是路径还是参数? 我想对您来说,最好的解决方案是简单地使用带有三个参数的request方法,并使用params作为可选参数 def re

论编辑

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

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

我不明白为什么我不能有两个参数模式匹配def。

当出现
请求(“post”,“test”)
时,会出现成像情况。
post
是方法名还是路径名,与
test
是同一个故事-是路径还是参数? 我想对您来说,最好的解决方案是简单地使用带有三个参数的
request
方法,并使用
params
作为可选参数

def request/3 defaults conflicts with def request/2

然后您可以在这个函数下面使用私有函数,其中一个函数在is_nil(params)时使用guard
,另一个函数不使用它。

因为如果您用两个参数调用它,它将不知道使用哪个参数。它可以是第一个函数中方法和路径的参数,也可以是第二个函数中带有默认方法的路径和参数。@JustMichael,哦,我尝试将默认参数作为最后一个参数def ss(a,b\\:c)
def request(path, method \\ :get, params \\ nil) do
    #logic
end