如何在elixir中替换数组中的元素

0 elixir

我想用 3 替换所有出现的 2。我想在不使用索引值的情况下执行此操作,因为这将是硬编码。到目前为止我所拥有的是:


list=[1,2,3,4,2,34,2]

replace_at(list, index, value)

Enum.each list, fn(x) ->
if x==2 do
  replace_at(list, index, 3)
end

Enum.each list, fn(x) ->
IO.puts x
end

Run Code Online (Sandbox Code Playgroud)

rya*_*ago 5

在 Elixir 中,您没有数组,而是链表。如果您只是想用 3 替换 2 的所有出现,您可以使用模块的map函数,Enum如下所示:

iex(1)> Enum.map(list, fn x -> if x == 2, do: 3, else: x end)
[1, 3, 3, 4, 3, 34, 3]
Run Code Online (Sandbox Code Playgroud)

您还可以使用模式匹配:

iex(1)> Enum.map(list, fn
...(1)> 2 -> 3
...(1)> x -> x
...(1)> end)
Run Code Online (Sandbox Code Playgroud)