我有一个范围,我正在向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...
答案 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
到[]
的部分应用有关。