2014-05-05 75 views
-1

我有一个最大的功能。如果我这样使用:“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"). 
+0

我运行的代码和你一样,它的工作原理与你期望的 – Khashayar

+0

你的代码是正确的,尽管我不会在我的项目中使用它...它引入了一个名称与标准erlang max/2函数的冲突,但如果您调用module:max/2,它将被解决。您可以尝试将该函数重命名为mymax,以获得有关您遇到的问题的一些线索。 – Pascal

回答

0

正如我所说的,你的代码应该工作,因为它适用于我。

但试试这个

max(X,X) -> io:fwrite("X = Y. There is no maximum.\n"); 
max(X,Y) when X > Y -> X; 
max(X,Y) -> Y. 

enter image description here

+0

模块:最大(8,8)。给我8回:O –

+0

这太奇怪了!它对我来说工作得很好。是否有可能以某种方式将数据视为浮点数? – Khashayar

+0

没办法:/我真的不知道。我会明天问我的erlang老师 –

0

函数必须返回的东西。而且没有任何副作用。你如何理解在你的情况下投入是平等的?特别是如果它被称为'max(ok,ok)'或'max(ok,0)'。

Erlang最大函数定义只是模拟数学运算,在所有明智的编程语言中都是一样的。

0

适合我。

你实际使用模块:max/2吗?

它看起来像你使用erlang:max/2。