在erlang地图中非法使用变量

时间:2015-03-31 04:47:26

标签: erlang

我们如何在函数内部创建一个映射,然后将它作为参数传递给erlang中的另一个函数?

我在以下代码中尝试了它:

-module(maps_all).
-export([test_my_map/2]).

test_my_map(K, V) ->
    io:fwrite('~w ~w ~n done.',[K, V]),
    nested_func(#{K => V}).

nested_func(MyMap) ->
    io:fwrite('In nested function as map ~n ~w',[MyMap]).

这会引发错误:

31> c(maps_all).
maps_all.erl:6: illegal use of variable 'K' in map
error

2 个答案:

答案 0 :(得分:3)

此外,Erlang 18 RC中的这个was added

答案 1 :(得分:1)

目前(Erlang R17)无法直接在地图表达式中使用变量。 您可以使用地图实现此目的:newput

nested_func(maps:put(K, V, maps:new()))