在Elixir中连接数组

时间:2015-11-02 17:12:54

标签: elixir

如何在Elixir中连接数组?

如果我有两个阵列:

[1, 2]

[3, 4]

我如何将它们连接成:

[1, 2, 3, 4]

3 个答案:

答案 0 :(得分:20)

对于连接,有++运算符。

所以对于例子

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

答案 1 :(得分:12)

您可以使用++/2函数连接列表(而不是数组)。

然而,通常在函数式编程中,您将使用cons(|)运算符构建一个列表,如下所示:

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"]

您经常会看到使用此技术构建的列表,然后在函数调用结束时反转,以使用与列表并置相同的顺序获取结果(例如Enum.filter/2)。这个答案很好地解释了Erlang: Can this be done without lists:reverse?

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

了解有关列表数据类型的更多信息

答案 2 :(得分:0)

如果要在管道运算符中执行此操作,请使用[1, 2] |> Enum.concat([3, 4])或其他变体[1, 2] |> Kernel.++([3, 4])