在循环中增加整数

Ale*_*dro 1 loops elixir

我试图仅在某些条件下增加变量

Enum.reduce(items, 0, fn item, acc  ->
  if item.condition do
    acc = acc+1
    Logger.info acc
  end
end)
Run Code Online (Sandbox Code Playgroud)

但我明白了

** (ArithmeticError) bad argument in arithmetic expression
Run Code Online (Sandbox Code Playgroud)

Nic*_*nil 5

函数返回的结果被递归地用作下一次迭代的累加器。

Logger.info返回:ok所以你可能不希望这是你的最后一行。

acc如果条件不满足,您也必须返回。

尝试:

Enum.reduce(items, 0, fn item, acc  ->
  if item.condition, do: acc + 1, else: acc
end)
Run Code Online (Sandbox Code Playgroud)