我是Eralng的新人。得到一些关于应用函数的问题 假设有一个功能定义:
mysum(X) -> fun(Y)-> X + Y end.
然后尝试像这样调用
mysum(32)(332)
收到错误
* 1: syntax error before: '('
所以我不得不
apply(mysum(32),[333])
或
M = mysum(32), M(333)
但我想知道更多,为什么它不支持,缺点是什么
答案 0 :(得分:6)
正如您所料,mysum返回一个函数。您必须将评估括在括号内以满足erlang解析器:
(mysum(32))(332)
这种拼写显然不含糊。
你的表达似乎没有含糊不清,因为你知道mysum(32)是一个函数,但是类型是在运行时在erlang中解决的,所以解析器不知道mysum是什么(32),它期待一些帮助这里要知道它必须做什么:括号,apply或中间变量,但它可以是运算符或分隔符。