Elixir Enum.max返回最后一个元素



如果将多个元素视为最大元素,则返回发现的第一个元素。 https://hexdocs.pm/elixir/enum.html#max/2

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

我本来希望这会返回{4, 0},显然我缺少某些内容?

感谢您的任何帮助,以清除我的混乱:)

那是因为在|> Enum.with_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}

最新更新