Pid作为erlang地图键?

时间:2015-05-18 05:57:47

标签: erlang

Pid可以是地图键吗?

从#{}语法构建地图,错误说Pid不能是密钥。

使用地图模块构建Bug,Pid可以是关键。

18> 
18> Pid = self().
<0.39.0>
19> #{Pid => 1}.
* 1: illegal use of variable 'Pid' in map
20> 
20> M1 = maps:from_list([{Pid, 1}]).
#{<0.39.0> => 1}
21> 
21> #{Pid := V} = M1.
* 2: illegal use of variable 'Pid' in map
22>                  
22> maps:get(Pid, M1).
1

2 个答案:

答案 0 :(得分:5)

&#34; Erlang 18(发布候选人2)&#34;中已经提供了对地图模式中任意键的支持。

$ erl
Erlang/OTP 18 [RELEASE CANDIDATE 2] [erts-7.0] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.0  (abort with ^G)
1> Pid = self().
<0.33.0>
2> #{Pid => 1}.
#{<0.33.0> => 1}

答案 1 :(得分:0)

问题不是来自pid的使用,而是来自在地图定义中使用变量作为关键字。它尚未实现(并且不知道何时可以完成)。