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 3的协议枚举未实现_Elixir - Fatal编程技术网

Elixir 3的协议枚举未实现

Elixir 3的协议枚举未实现,elixir,Elixir,失败代码: Enum.map(1..30, &(&1 * 2)) |> Enum.map &(&1 + 1) |> Enum.sum ** (Protocol.UndefinedError) protocol Enumerable not implemented for 3 (elixir) lib/enum.ex:1: Enumerable.impl_for!/1 (elixir) lib/enum.ex:112: Enumerabl

失败代码:

Enum.map(1..30, &(&1 * 2)) |> Enum.map &(&1 + 1) |> Enum.sum
** (Protocol.UndefinedError) protocol Enumerable not implemented for 3
    (elixir) lib/enum.ex:1: Enumerable.impl_for!/1
    (elixir) lib/enum.ex:112: Enumerable.reduce/3
    (elixir) lib/enum.ex:1400: Enum.reduce/3
    (elixir) lib/enum.ex:1043: anonymous fn/3 in Enum.map/2
    (elixir) lib/enum.ex:1387: Enum."-reduce/3-lists^foldl/2-0-"/3
    (elixir) lib/enum.ex:1043: Enum.map/2
但这很好:

iex(18)> arr = Enum.map(1..30, &(&1 * 2)) |> Enum.map &(&1 + 1)
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43,
 45, 47, 49, 51, 53, 55, 57, 59, 61]
iex(19)> arr |> Enum.sum
960

我的第一个实现中有什么错误吗?

如果您运行的是Elixir 1.2,那么您应该看到一个警告:

警告:您正在通过管道进入一个没有括号的函数调用,这可能是不明确的。请用括号括起您要导入的函数。例如:

foo 1 |> bar 2 |> baz 3
应写为:

foo(1) |> bar(2) |> baz(3)
将第一个示例更改为:

Enum.map(1..30, &(&1 * 2)) |> Enum.map(&(&1 + 1)) |> Enum.sum

有关详细说明,请参阅。

如果您正在运行Elixir 1.2,则应看到警告:

警告:您正在通过管道进入一个没有括号的函数调用,这可能是不明确的。请用括号括起您要导入的函数。例如:

foo 1 |> bar 2 |> baz 3
应写为:

foo(1) |> bar(2) |> baz(3)
将第一个示例更改为:

Enum.map(1..30, &(&1 * 2)) |> Enum.map(&(&1 + 1)) |> Enum.sum
有关详细说明,请参阅