0
私は地図上に情報の格納が必要な単純なPOCをElixirで開発しようとしています。問題は、値でソートされたリストとしてマップを表示する方法を理解できないことです。エリクサーでキーワードリストをどのように並べ替えますか?
defmodule MapUpdater do
def update_score(map, player, :double), do: Map.update(map, player, 2, &(&1 * 2))
def update_score(map, player, :halve), do: Map.update(map, player, .5, &(&1 * 0.5))
def update_score(map, player, :penalize), do: Map.update(map, player, -1, &(&1 - 1))
def view_scores(map, :top), do: Map.to_list(map) |> Enum.sort_by(???)
def view_scores(map, :bottom), do: Map.to_list(map) |> Enum.sort_by(???)
end
私が試してみました:
Enum.sort_by(&(elem(&1, 1)) > &(elem(&2, 1)))
、これのバリエーションの任意の数を、しかし、何度もドキュメントを読んだことは私を助けていません。何かアドバイス?
ありがとう!私はこれをどうやって行うのか分かりませんでしたが、それはとても簡単でした。このsort_byシグネチャが何を意味するのかちょっと洞察できますか? 'sort_by(enumerable、mapper、sorter \\< =/2)'私はそれを使っていましたが、私はそれが何をすべきか理解していないと思います。 – smkarber
'mapper'は、' enumerable'の各項目で呼び出される関数です。 'mapper'が返す値は、' <= '演算子を使って比較されます。つまり、昇順にソートされます。 '&> ='を渡すと、降順ソートを行う必要があります。 (Sidenote:あなたがそれを言及するまで、 'Enum.sort_by'がオプションの第3引数を持っているかどうか分かりませんでした!) – Dogbert
私はあなたにアドバイスを提供するのは遠いですが、 a')将来の訪問者が答えに従うのをより容易にするドキュメンテーション['Enum.sort_by/3'](https://hexdocs.pm/elixir/Enum.html#sort_by/3)に答えてください。b)ボーナスとして、追加のパラメータを持つ関数のアリティのようなものをすべて発見します。 – mudasobwa