elixir - 如何获取列表中除最后一个之外的所有元素?

asi*_*niy 19 elixir

假设我有一个清单 [1, 2, 3, 4]

除了最后一个,如何从此列表中获取所有元素?所以,我会的[1, 2, 3]

Sch*_*der 29

像这样使用Enum.drop/2:

list = [1, 2, 3, 4]
Enum.drop list, -1      # [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)


asi*_*niy 18

我的解决方案(我觉得它不干净,但它有效!)

a = [1, 2, 3, 4]
[head | tail] = Enum.reverse(a)
Enum.reverse(tail) # [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)


Gra*_*ett 6

如果您想要获取最后一项及其前面的列表的其余部分,您现在可以使用List.pop_at/3

{last, rest} = List.pop_at([1, 2, 3], -1)
{3, [1, 2]}
Run Code Online (Sandbox Code Playgroud)

https://hexdocs.pm/elixir/List.html#pop_at/3