我试图仅在某些条件下增加变量
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)
函数返回的结果被递归地用作下一次迭代的累加器。
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)