Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums Enum.reduce/3中没有匹配的函数子句_Enums_Elixir_Phoenix Framework - Fatal编程技术网

Enums Enum.reduce/3中没有匹配的函数子句

Enums Enum.reduce/3中没有匹配的函数子句,enums,elixir,phoenix-framework,Enums,Elixir,Phoenix Framework,当我试图对从理解中得到的列表求和时,出现了以下错误: range = 1..999 multiple_of_3_or_5? = fn(n) -> (rem(n, 3) == 0 || rem(n, 5) == 0) end IO.inspect for n <- range, multiple_of_3_or_5?.(n), do: Enum.reduce n, 0, fn(x) -> x end #=> ** (FunctionClauseError) no f

当我试图对从理解中得到的列表求和时,出现了以下错误:

range = 1..999

multiple_of_3_or_5? = fn(n) -> (rem(n, 3) == 0 || rem(n, 5) == 0) end
IO.inspect for n <- range, multiple_of_3_or_5?.(n),
  do: Enum.reduce n, 0, fn(x) -> x end

#=> ** (FunctionClauseError) no function clause matching in Enum.reduce/3
range=1..999
_3_或_5?=fn(n)->(rem(n,3)==0 | | rem(n,5)==0)结束
IO.检查是否有n x端
#=>**(FunctionClauseError)Enum.reduce/3中没有匹配的函数子句

为什么会出现此错误?

枚举.reduce的第三个参数中的函数需要有两个参数,可枚举的元素和累加器。当前只有一个参数,
x

第一个和第三个参数错误。你可以试试这个

range = 1..999
multiple_of_3_or_5? = fn(n) -> (rem(n, 3) == 0 || rem(n, 5) == 0) end
for n <- range, multiple_of_3_or_5?.(n) do n end |> Enum.reduce(0, 
fn(x, acc) -> x + acc end)
可能重复的
range = 1..999
multiple_of_3_or_5? = fn(n) -> (rem(n, 3) == 0 || rem(n, 5) == 0) end
Enum.reduce_while(range, 0, fn i, acc ->
  if multiple_of_3_or_5?.(i), do: {:cont, acc + i}, else: {:cont, acc}
end)