2016-07-15 51 views
1
def request(method \\ :get, path) do 
    end 

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

在編譯時衝突引發默認幾個DEFS

def request/3 defaults conflicts with def request/2 

我不知道爲什麼我不能有兩個說法,模式匹配DEF。

+0

因爲如果你用兩個參數調用它,它不會知道使用哪一個參數。它可能是第一個函數中的方法和路徑的參數,或者它可能是第二個函數中默認方法的路徑和參數參數。 – JustMichael

+0

@JustMichael,哦,我看到 –

+0

嘗試把默認參數作爲最後一個def ss(a,b \\:c) – Haito

回答

3

成像情況何時到來request("post", "test")posttest的路徑名稱或路徑名稱,是否爲路徑或參數? 我想你最好的解決方案是簡單地使用這個帶有三個參數的request方法,並且還使用params作爲可選參數。

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

然後你可以在此功能下使用私人聚會,其中一人使用保護when is_nil(params)和一個沒有它。