2017-12-06 11 views
3

複数の要素が最大と見なされる場合、最初に見つかった要素が返されます。 https://hexdocs.pm/elixir/Enum.html#max/2Elixir Enum.maxは最初の要素の代わりにlastを返します

iex> [4, 0, 4] |> Enum.with_index |> Enum.max 
{4, 2} 

私は、これは明らかに、私は何かが欠けてる、{4, 0}を返すことを期待しているでしょうか?

最初の要素が等しいときに私の混乱を解消するために任意の助けてくれてありがとう:)

答えて

7

|> Enum.with_indexた後、あなたのリストは[{4, 0}, {0, 1}, {4, 2}]{4, 2}あるためだ、比較タプルとして{4, 0}以上である、第二(及び3番目など)の要素が比較されます。

あなたはこのように代わりEnum.max_by/2を使用することですテストしようとしていたものをテストするための正しい方法:

iex(1)> [4, 0, 4] |> Enum.with_index |> Enum.max_by(fn {x, i} -> x end) 
{4, 0} 
関連する問題