Elixir Enum.max返回最后一个元素,而不是第一个元素

Elixir Enum.max返回最后一个元素,而不是第一个元素,elixir,Elixir,如果多个元素被认为是最大的,则返回找到的第一个元素。 我本以为这会返回{4,0},显然我遗漏了什么 谢谢你帮我澄清我的困惑:)那是因为在|>Enum.使用{u index,你的列表是[{4,0},{0,1},{4,2}]和{4,2}大于{4,0}当比较元组时,当第一个元素相等时,比较第二个(然后是第三个)元素 测试您要测试的内容的正确方法是使用Enum.max_by/2而不是这样: iex(1)> [4, 0, 4] |> Enum.with_index |> Enum.ma

如果多个元素被认为是最大的,则返回找到的第一个元素。

我本以为这会返回
{4,0}
,显然我遗漏了什么


谢谢你帮我澄清我的困惑:)

那是因为在
|>Enum.使用{u index
,你的列表是
[{4,0},{0,1},{4,2}]
{4,2}
大于
{4,0}
当比较元组时,当第一个元素相等时,比较第二个(然后是第三个)元素

测试您要测试的内容的正确方法是使用
Enum.max_by/2
而不是这样:

iex(1)> [4, 0, 4] |> Enum.with_index |> Enum.max_by(fn {x, i} -> x end)
{4, 0}
iex(1)> [4, 0, 4] |> Enum.with_index |> Enum.max_by(fn {x, i} -> x end)
{4, 0}