2012-02-13 68 views
-1

我有以下的属性列表二郎字符串列表连接

PropList = [{numbers, ["22", "10"]}, {etc, "22"}]. 

我想走出名单["22", "10"]这样的:

proplists:get_value(numbers, PropList). 

的问题是,我得到的名单中的两个字符串连接,即"2210"。我尝试使用propertylists:lookup/2来获取整个数字元组和模式匹配来提取列表。但我仍然得到"2210"

我猜这是因为erlang在内存中存储字符串的方式..有人可以帮我吗?

后来编辑:我设法提取和使用数据,如果我在字符串列表上做一个地图......也许这只是一个打印问题?

后期 - 后期编辑我不知道发生了什么,也许我太累了:)抱歉。明天将删除此问题

+1

我复制和粘贴,它工作正常(我得到的阵列)。 – Kru 2012-02-13 16:07:42

回答

1
1> PropList = [{numbers, ["22", "10"]}, {etc, "22"}].  
[{numbers,["22","10"]},{etc,"22"}] 

2> proplists:get_value(numbers, PropList). 
["22","10"] 

3> 

这是我的输出与您的给定片段。

0

是的,代码是正确的。如果您使用io:format,它将连接所有输出。

Erlang中有一个称为iolist的元类型,如“可用于输入/输出”。它可以是字符(整数),其他iolists或二进制文件的列表。听起来很混乱,但非常方便。

如果您想要漂亮打印,请使用~p格式。

换句话说:

2> io:format([[65, $B, 67], <<"DEF">>, [[71, 72], 73], "JKL", 10]). 
ABCDEFGHIJKL 
ok 
3> io:format("~p", [[[65, $B, 67], <<"DEF">>, [[71, 72], 73], "JKL", 10]]). 
["ABC",<<"DEF">>,["GH",73],"JKL",10]ok