0

我是 Eralng 的新手。得到一个关于应用函数的小查询,
假设定义了一个函数:

mysum(X) -> fun(Y)-> X + Y end.

然后尝试像这样打电话

mysum(32)(332) 

出错

* 1: syntax error before: '('

所以我不得不

apply(mysum(32),[333])

或者

M = mysum(32), M(333)

但我想多了解一点,为什么不支持,有什么缺点

4

1 回答 1

6

如您所料, mysum 返回一个函数。您必须将评估括在括号内以满足 erlang 解析器:

(mysum(32))(332)

这个拼写显然没有歧义。

您的表达式似乎并不模棱两可,因为您知道 mysum(32) 是一个函数,但是类型是在运行时在 erlang 中解决的,所以解析器不知道什么是 mysum(32),它希望在这里得到一些帮助它必须做什么:括号、应用或中间变量,但它可以是运算符或分隔符。

于 2013-06-22T04:30:35.003 回答