为什么不允许以下内容:
156> lists:map(lists:sum,[[1,2,3,4],[1,2,3]).
* 1: illegal expression
,当我在lists:sum
处玩耍时,它是允许的:
162> lists:map(fun (L)->lists:sum(L)end,[[1,2,3,4],[1,2,3]]).
[10,6]
?
答案 0 :(得分:4)
@spkhaira answer是正确的,此语法决定背后的原因是在Erlang函数和变量占用不同的名称空间中,它类似于Lisps2。这主要是由于两个原因:
使用这2个属性,我们无法推断出要调用的函数的“版本”,这就是为什么需要使用/N
的原因。 fun
前缀呢?解析器仅需要区分用于定义Arity的erlang:'/'
(又名除法)和/N
。
答案 1 :(得分:3)
尝试一下-
lists:map(fun lists:sum/1,[[1,2,3,4],[1,2,3]]).