传送到Enum.into的范围会发出警告

时间:2016-08-01 12:36:01

标签: elixir

我有一个范围,我正在向Enum.into ([])发出警告。这里有什么问题?

iex(1)> 1..5 |> Enum.into ([]) 
warning: you are piping into a function call without parentheses...

添加括号后

iex(2)> (1..5) |> Enum.into ([])
warning: you are piping into a function call without parentheses...

2 个答案:

答案 0 :(得分:4)

问题是Enum.into参数的空间。它不被解释为函数调用的括号,而是作为围绕其中一个参数的分组机制。函数名和参数之间不允许有空格。

1..5 |> Enum.into ([])1..5 |> Enum.into(([]))相同(如果我们填写缺少的括号编译器抱怨)。您想要的可能是1..5 |> Enum.into([]),这是一个正确的调用,编译器不会抱怨。

答案 1 :(得分:0)

要摆脱警告,请将括号括在整个Enum.into shebang周围:

(1..5) |> (Enum.into [] )

我不是百分百肯定为什么Elixir在这里抱怨;警告提到

 foo 1 |> bar 2 |> baz 3

应改写为

 foo(1) |> bar(2) |> baz(3)
根据我的理解,这正是你所做的。可能与Enum.into[]的部分应用有关。