2015-05-18 3 views
2

Может ли Pid отображать ключ?Pid как erlang карты ключ?

Строить карты из синтаксиса # {}. Ошибка говорит, что Pid не может быть ключом.

Ошибка сборки с модулем карт, 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 
+0

Вы можете использовать 'maps: put (Pid, V, M)', когда ключ является переменной. – johlo

ответ

6

Поддержка произвольных ключей в шаблонах карт уже доступна в «Erlang 18 (release release 2)».

$ 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} 
0

Проблема заключается не в использовании pid, а в использовании переменной в качестве ключа в определении карты. Он еще не реализован (и не знает, когда это можно сделать).

Смежные вопросы