如何在Elixir中连接数组?
如果我有两个阵列:
[1, 2]
和
[3, 4]
我如何将它们连接成:
[1, 2, 3, 4]
答案 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])