我有一個最大的功能。如果我這樣使用:「module:max(6,6)」。結果將是6. 爲什麼不是「X = Y.沒有最大值」。 ?erlang max函數邏輯
max(X,Y) when X > Y -> X;
max(X,Y) when X < Y -> Y;
max(X,Y) -> io:fwrite("X = Y. There is no maximum.\n").
我有一個最大的功能。如果我這樣使用:「module:max(6,6)」。結果將是6. 爲什麼不是「X = Y.沒有最大值」。 ?erlang max函數邏輯
max(X,Y) when X > Y -> X;
max(X,Y) when X < Y -> Y;
max(X,Y) -> io:fwrite("X = Y. There is no maximum.\n").
正如我所說的,你的代碼應該工作,因爲它適用於我。
但試試這個
max(X,X) -> io:fwrite("X = Y. There is no maximum.\n");
max(X,Y) when X > Y -> X;
max(X,Y) -> Y.
模塊:最大(8,8)。給我8回:O –
這太奇怪了!它對我來說工作得很好。是否有可能以某種方式將數據視爲浮點數? – Khashayar
沒辦法:/我真的不知道。我會明天問我的erlang老師 –
函數必須返回的東西。而且沒有任何副作用。你如何理解在你的情況下投入是平等的?特別是如果它被稱爲'max(ok,ok)'或'max(ok,0)'。
Erlang最大函數定義只是模擬數學運算,在所有明智的編程語言中都是一樣的。
適合我。
你實際使用模塊:max/2嗎?
它看起來像你使用erlang:max/2。
我運行的代碼和你一樣,它的工作原理與你期望的 – Khashayar
你的代碼是正確的,儘管我不會在我的項目中使用它...它引入了一個名稱與標準erlang max/2函數的衝突,但如果您調用module:max/2,它將被解決。您可以嘗試將該函數重命名爲mymax,以獲得有關您遇到的問題的一些線索。 – Pascal