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