在 Elixir 中反向连接
Reverse concat in Elixir
Elixir(或 Erlang)中是否有标准库函数可以将一个列表的反向连接在其他列表的前面?基本上我在 Scala 中寻找 reverse_:::
的等价物。
基本原理是在列表上实现尾递归算法时很方便。在递归过程中,您可以保留一些元素以备后用,方法是将它们添加到累加器列表的前面。最后,您可以一次将它们反向连接到组装列表的其余部分(这应该非常有效)。
您可以使用 lists:reverse/2
在 Erlang 中进行反转和连接。
我认为文档解释和示例足够清楚:
reverse(List1, Tail) -> List2
.
Returns a list with the elements in List1
in reverse order, with the
tail Tail
appended.
> lists:reverse([1, 2, 3, 4], [a, b, c]).
[4,3,2,1,a,b,c]
Elixir 中反转列表的函数是Enum.reverse/1
, and Enum.reverse/2
可用于反转和连接:
iex> Enum.reverse([1,2,3])
[3, 2, 1]
iex> Enum.reverse([1,2,3], [:a, :b, :c])
[3, 2, 1, :a, :b, :c]
Elixir(或 Erlang)中是否有标准库函数可以将一个列表的反向连接在其他列表的前面?基本上我在 Scala 中寻找 reverse_:::
的等价物。
基本原理是在列表上实现尾递归算法时很方便。在递归过程中,您可以保留一些元素以备后用,方法是将它们添加到累加器列表的前面。最后,您可以一次将它们反向连接到组装列表的其余部分(这应该非常有效)。
您可以使用 lists:reverse/2
在 Erlang 中进行反转和连接。
我认为文档解释和示例足够清楚:
reverse(List1, Tail) -> List2
.Returns a list with the elements in
List1
in reverse order, with the tailTail
appended.
> lists:reverse([1, 2, 3, 4], [a, b, c]).
[4,3,2,1,a,b,c]
Elixir 中反转列表的函数是Enum.reverse/1
, and Enum.reverse/2
可用于反转和连接:
iex> Enum.reverse([1,2,3])
[3, 2, 1]
iex> Enum.reverse([1,2,3], [:a, :b, :c])
[3, 2, 1, :a, :b, :c]