2012-08-06 154 views
1

如何將字符串追加到字符串列表中,而不使用 列表:append()。使用list:append()的代碼在這裏,怎麼做 同樣使用list理解?將字符串附加到Erlang中的字符串列表

S1 = "String1" . 
S2 = "String2" . 
S3 = "String3" . 
L1 = [ S1, S2 ] . 
L2 = lists:append(L1,[S3]). 

最後一行生成結果

["String1","String2","String3"] 

如何做到這一點使用列表理解?

+0

爲什麼你想列出解析? – 2012-08-06 14:20:34

回答

2

看二郎文檔: http://www.erlang.org/doc/efficiency_guide/listHandling.html

至於說有 - 添加元素列表的尾部是低效的,因爲它會導致新的列表創建。

如果您需要將元素添加到列表尾部,更好的方法可能是:以相反的順序創建列表。和在結束只是調用函數列表:在該實施例中反向/ 1

查找:

18> S1 = "String1". 
"String1" 
19> S2 = "String2". 
"String2" 
20> S3 = "String3". 
"String3" 
21> S4 = "String4". 
"String4" 
22> L1 = [ S2, S1 ]. 
["String2","String1"] 
23> L2 = [ S3 | L1 ]. 
["String3","String2","String1"] 
24> L3 = [ S4 | L2 ]. 
["String4","String3","String2","String1"] 
25> L4 = lists:reverse(L3). 
["String1","String2","String3","String4"] 

它是在存儲器使用效率比這一個:

34> S1 = "String1". 
"String1" 
35> S2 = "String2". 
"String2" 
36> S3 = "String3". 
"String3" 
37> S4 = "String4". 
"String4" 
38> L1 = [ S1, S2 ]. 
["String1","String2"] 
39> L2 = L1 ++ [ S3 ]. 
["String1","String2","String3"] 
40> L3 = L2 ++ [ S4 ]. 
["String1","String2","String3","String4"] 

(使用「+ +'相當於列表:append)。

在第一個示例中 - 僅創建了2個列表實例。並在第二 - 3例。在更大的示例結果應該是2列表實例與N-1實例