2015-03-31 3 views
0

Как мы можем создать карту внутри функции, а затем передать ее как аргумент другой функции в 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 
+1

Она должна быть доступна с R18. – Pascal

ответ

1

На данный момент (Erlang R17) нет никакого способа, чтобы использовать переменную непосредственно в выражении карты. Вы можете добиться этого с картами: new и put:

nested_func(maps:put(K, V, maps:new())) 
Смежные вопросы