Elixir中的连接阵列

问题描述:

如何连接Elixir中的阵列?Elixir中的连接阵列

如果我有两个数组:

[1, 2] 

[3, 4] 

我如何将它们连接起来是:

[1, 2, 3, 4] 

您可以连接具有++/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

进行连结,有++操作。

所以对于例如

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

阅读更多关于列表的数据类型。另外,您也可以删除列表中的部分具有'--''[1,2,3,4,5 ] - [3,4,5]'产生'[1,2]'。 –