$\huge{元氣ですかーーーーッ!!!}$
はじめに
闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。
本日は、Map.update/4を説明します。
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
Map.update/4
指定したキーで、マップの値を更新します。
マップとはキーと値のアレです。はてな? の方は、「闘魂Elixir ── 11. Mapモジュール」をご覧になってください。
値はキーが存在しないときの初期値と、キーが存在するときにどういう裁定をくだすのかを関数で指定できます。レフェリーです。私は、裁定(レフェリー)関数と呼んでいます。これは私が勝手にそう呼んでいるので、他では通用しません。
こちらの図1をみてください。
なかなか複雑ですね。説明します。
Map%{a: 1}
に、キー:a
の値を13
で更新したいわけです。
キー:a
はすでにMapの中にあるので、裁定(レフェリー)関数の出番です。ここでは元の値を2倍するという関数が指定されています。
13
はどこにいっちゃったの? とお思いのかたがいらっしゃるかもしれません。なかったことにされます。そういうものなのです。13
を結果に活かしたい場合には、「闘魂Elixir ── 14. Map.merge」を使いましょう。
説明はこのくらいにしておきます。
さっそく動かしてみましょう。
IExで確かめてみましょう。
iex
IExが立ち上がったら、以下のプログラムを実行してみてください。
iex> f = fn existing_value -> existing_value * 2 end
iex> Map.update(%{a: 1}, :a, 13, f)
%{a: 2}
Map%{a: 1}
から、%{a: 2}
得られました
ワンポイントレッスン
リスト[:cat, :dog, :cat, :bird, :inoki, :dog, :cat]
に含まれるアトムの数を数えます。
今回紹介したMap.update/4とEnum.reduce/3を組み合わせると実現できます。
iex> ( [:cat, :dog, :cat, :bird, :inoki, :dog, :cat]
|> Enum.reduce(%{}, fn a, acc -> Map.update(acc, a, 1, & &1 + 1) end) )
%{bird: 1, cat: 3, dog: 2, inoki: 1}
さらにいうと、Enum.frequencies/1を使うことで同じ結果を得ることができます。
今日の闘魂
今日は、『読史管見』から言葉を引きます。
人事を尽くして天命を待つ
解説は、こちらをご参照ください。
猪木さん流に言うと、 「やることをきちんとやって、もっと自分にうぬぼれてみろよ」 ということです。
有名な「出る前に負けることを考える馬鹿いるかよ! 出て行けコラァ!」のシーンにつながるわけです。
そしてこの心構えは、サッカー日本代表の2022年ワールドカップでの活躍につながるわけです。
私は信じます。日本代表がワールドカップの頂点に立つことを。
「オレは世界で最強だ」という思いで突っ走ってきた。その自信の源となっていたのは、日々のたゆまぬトレーニングだった。私はプロフェッショナルとして、いついかなるときでも練習に関しては妥協したことがないと自信を持っていえる。(中略)もちろん、単に「うぬぼれ屋になれ」という意味じゃない。(中略)勝つためには努力が必要だ。きちんと努力しているならば、卑屈になるな、弱気になるな、自信を持て! もっと自分にうぬぼれて生きてみなよ。
『アントニオ猪木 最後の闘魂』から引きました。
みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。
さいごに
Map.update/4を説明しました。
闘魂の意味は、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
$\huge{1、2、3 ぁっダー!}$
Elixir Advent Calendar 3の15日目は、毎度お馴染み @torifukukaiou さんで、Mapモジュールの続き、Map .updateです😌https://t.co/dMf3RdQ9Pi
— piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) December 15, 2022
…え?…Map .updateがレフェリー???…なんだか闘魂ストロングスタイルが徐々にElixir界に入り込んできている?…😅 pic.twitter.com/lvJidLAvVM
$\huge{元氣があればなんでもできる!}$
-
図は、https://excalidraw.com/ を使って作成しています。スゴ腕ハッカーが書いたかのような手書き風の絵が書けるので最近の私のお気に入りツールです。 ↩