2015-11-02 78 views

回答

12

您可以連接具有++/2功能列表(不陣列)。

但是往往在函數式編程,你將建立使用利弊,像這樣(|)運算符的列表:

a = []    # [] 
b = ["foo" | a]  # ["foo"]   ["foo" | []] 
c = ["bar" | b]  # ["bar", "foo"] ["bar" | ["foo" | []]] 

這相當於:

a = []    # [] 
b = ["foo" | a]  # ["foo" | []] 
c = ["bar" | b]  # ["bar" | ["foo" | []]] 

你可能已經看到了這個操作符在模式匹配中:

["bar" | tail] = ["bar", "foo"] #tail is now ["foo"] 

你會經常看到列表bu使用這種技術,然後在函數調用結束時顛倒過來,以與使用列表級聯相同的順序獲得結果(例如Enum.filter/2)。這個答案解釋得很好Erlang: Can this be done without lists:reverse?

您可以在http://elixir-lang.org/getting-started/basic-types.html#lists-or-tuples

+0

好的一點是要確保問這個問題的人意識到他(不定代名詞意義)正在處理列表而不是數組。 –

+1

在寫這個問題的時候,我不明白這一點,但顯然現在我知道了。因爲它是Elixir的一個基本組成部分,所以其他人必然要和我一樣提出同樣的問題。這個答案解決了這個問題,並且它並不是真正被問到的數組。 – steakunderscore

16

進行連結,有++操作。

所以對於例如

iex> [1, 2] ++ [3, 4] 
[1, 2, 3, 4] 
+4

閱讀更多關於列表的數據類型。另外,您也可以刪除列表中的部分具有'--''[1,2,3,4,5 ] - [3,4,5]'產生'[1,2]'。 –