R17下maps新增参数的问题

今天遇到一个奇怪的问题,我之前写的一个函数在我弟弟的机器上编译出错。代码如下:

%%将list  [k1,v1,k2,v2...]转换成map {k1=>v1,key2=>v2...}
-spec(convert_list_to_map(List::list()) -> map()).
convert_list_to_map(List) when is_list(List)->
  F = fun(X,{IsPass,Key,Result})->
    if
      not(IsPass)-> {true,X,Result};
      true -> {false,{},Result#{Key=>X}}
    end
      end,
  {_,_,Return} = lists:foldl(F,{false,{},#{}},List),
  Return.

在我机器上表现正常,在我弟弟机器上总是报错

后来发现我俩的erl版本不一样,我用的是R18,在

http://stackoverflow.com/questions/29360793/illegal-use-of-variable-in-erlang-map
中提到

将 Result#{Key=>X} 改成 maps:put(Key,X,Result)
编译通过。
原文地址:https://www.cnblogs.com/lsm19870508/p/5355504.html