2016-08-01 10 views
2

私はEnum.into ([])に警告を送出する範囲を持っています。ここで何が間違っていますか?範囲がEnum.intoにパイプされ、警告がスローされる

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

全体Enum.intoシェバングの周りにあなたの括弧を入れて、警告を取り除くために括弧

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

答えて

4

問題は、引数の周囲のスペースがEnum.intoです。これは関数呼び出しの括弧ではなく、引数の1つを囲むグループ化メカニズムとして解釈されます。関数名と引数の間にはスペースは使用できません。

1..5 |> Enum.into ([])1..5 |> Enum.into(([]))と同じです(不足している括弧のコンパイラが不満を述べる場合)。あなたが望んだのはおそらく1..5 |> Enum.into([])であり、これは正しい呼び出しであり、コンパイラーはそれについて文句を言っていません。

+0

単一要素を使用しているときに 'Enumerable for 90'が実装されていない理由が考えられます。例えば'90 |> Enum.into([])' – Bala

+0

'Enum.into(90、[])'を呼び出すのと同じです。 'Enum'からのほとんどの関数の第一引数は、' Enumerable'プロトコルを実装する必要があります。整数はそれを実装しません - 列挙可能な値は、他の複数の値から構成された値です。整数は単なる値であり、それらのために 'Enumerable'を実装するのは本当に意味がありません。 – michalmuskala

0

を追加した後:エリクシールは不平を言う理由

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

私は100%わからないんだけどここに;私の理解へ - - 警告が

foo 1 |> bar 2 |> baz 3 

foo(1) |> bar(2) |> baz(3) 

のように書き換えることがなければならない言及あなたはまったく同じものです。おそらくEnum.into[]の部分的な適用に関係しているでしょう。

+0

問題はMichal Muskalaが指摘しているように、関数名と引数の間のスペースです。 –

関連する問題