私は多くのエリクシルを書いています。私のコードをトリミングし続けるものは、キーがすでに存在する場合にのみ地図の値を更新したいときです。このようなコードで、最大:マップを更新するにはキーが既に存在するときのみ
def incSomething(state, key) do
{_, state} = get_and_update_in(state.way.down.there[key], fn
nil -> :pop
j -> {nil, j + 1}
end)
state
end
は時々関与し、それが厄介なるので、時々get_and_update_insがネストされているコードの多くがあります。
私は当初、自分がupdate_in/2
マクロを使用したいたが、むしろSQLでupdate
とreplace into
の違いなどの更新よりもアップサートのよりとして機能するように思えます。
Map.update/4
ではデフォルトを設定できますが、何も設定しないことはできません。 Map.update!/3
キーが見つからない場合は、エラーが発生します。
これを標準言語で行うことはあまり厄介な方法ですか?または私は自分自身を書く必要がありますか?
私が見つけた最も近いものは 'Map.replace/3'でしたが、キーと値を受け取りました。古い値を取り、新しい値を返す関数を渡すことはできません。 – Dogbert