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
为什么可以';我在elixir的过滤函数中使用or语句吗?_Elixir - Fatal编程技术网

为什么可以';我在elixir的过滤函数中使用or语句吗?

为什么可以';我在elixir的过滤函数中使用or语句吗?,elixir,Elixir,在elixir中,如果我对列表进行操作,得到3的倍数: 1..10 |> Enum.filter(fn(x) -> (rem(x,3) == 0) end) 输出:[3,6,9] 其中,好像我添加了一个or语句: 1..10 |> Enum.filter(fn(x) -> (rem(x,3) == 0 || rem(x,5)) end) 输出:[1,2,3,4,5,6,7,8,9,10] 为什么or语句(已括在括号内)会给出意外输出?rem/2将返回一个整数作为其

在elixir中,如果我对列表进行操作,得到3的倍数:

1..10 |> Enum.filter(fn(x) -> (rem(x,3) == 0) end)
输出:
[3,6,9]


其中,好像我添加了一个or语句:

1..10 |> Enum.filter(fn(x) -> (rem(x,3) == 0 || rem(x,5)) end)
输出:
[1,2,3,4,5,6,7,8,9,10]



为什么or语句(已括在括号内)会给出意外输出?

rem/2
将返回一个整数作为其结果-所有整数在Elixir中都是真实的,包括
0
。这意味着
rem(x,5)
始终是真实的,过滤函数将始终生成真实并保留所有项。您可能打算使用:

iex(1)> 1..10 |> Enum.filter(fn(x) -> rem(x,3) == 0 || rem(x,5) == 0 end)
[3, 5, 6, 9, 10]

rem/2
将返回一个整数作为其结果-所有整数在Elixir中都是真实的,包括
0
。这意味着
rem(x,5)
始终是真实的,过滤函数将始终生成真实并保留所有项。您可能打算使用:

iex(1)> 1..10 |> Enum.filter(fn(x) -> rem(x,3) == 0 || rem(x,5) == 0 end)
[3, 5, 6, 9, 10]