属性列表get_value未定义erlang

4si2a6ki  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(164)

我是新来的二郎,我有如下的财产清单。

[{name,<<"127.0.0.1:53290 -> 127.0.0.1:1883">>},{pid,<0.987.0>},{user,<<"guest">>},{type,direct}]

这是我的职责。

close_single_connection(Conn, ReqData) ->
     io:format("~p\n", Conn),
     case proplists:get_value(pid, Conn) of
          undefined -> io:format("Undefined~n"),ok;
          Pid when is_pid(Pid) ->
              io:format(Pid),
              force_close_connection(ReqData, Conn, Pid)
         end.

io:format("~p\n", Conn)正确地返回了我的属性列表。但是proplists:get_value(pid, Conn)返回了未定义。
当我在Erlang shell中执行以下命令时,它会正确返回Pid值。

List = [{name,<<"127.0.0.1:53290 -> 127.0.0.1:1883">>},{pid,<0.987.0>},{user,<<"guest">>},{type,direct}],
proplists:get_value(pid, List).

请给予我一个确定原因的方法。

uoifb46i

uoifb46i1#

问题在列表创建步骤中。
列表应按如下方式创建。此操作正常。

List = [],

List ++ [{name,<<"127.0.0.1:53290 -> 127.0.0.1:1883">>},{pid,<0.987.0>},{user,<<"guest">>},{type,direct}].

以下是错误的。我添加了多余的[],如下所示。

List = [],

X = [{name,<<"127.0.0.1:53290 -> 127.0.0.1:1883">>},{pid,<0.987.0>},{user,<<"guest">>},{type,direct}],
List ++ [X].

相关问题