$\huge{元氣ですかーーーーッ!!!}$
はじめに
闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。
本日は、Enum.filter/2を説明します。
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
Enum.filter/2
Enumerableなものの要素ひとつひとつに関数を適用して、得られた結果がtruthyとなる要素のみを残します。
「Enumerableなもの」がはてな? の方は、「闘魂Elixir ── 06. Enumモジュール」を振り返ってくださいませ。
Input(元)のEnumerableなものの長さと、Enum.filter/2を通して変換されたOutputのリストの長さは同じになるか、少なくなるか、空になるかのいずれかです。
Input(元)のEnumerableなものの長さより長くなることはありません。
言葉にするとなんだか難しいかもしれませんが、こちらの図をみてください。
上図の説明をします。1
整数1〜5の5個の要素からなる、[1,2,3,4,5]
をInputにしています。
各要素に適用する関数は、f = fn x -> rem(x, 2) == 0 end
です。この関数はinputの値を2で割った余りが0かどうかを比較しています。つまり偶数であればtrue
で、奇数の場合にはfalse
となります。
Enum.filter([1,2,3,4,5], f)
の実行結果は、[2, 4]
が得られます。
IExで確かめてみましょう。
iex
IExが立ち上がったら、以下のプログラムを実行してみてください。
iex> f = fn x -> rem(x, 2) == 0 end
iex> Enum.filter([1,2,3,4,5], f)
[2, 4]
[1,2,3,4,5]
=> [2, 4]
の変換ができました
ワンポイントレッスン
ここでは、絵がごちゃごちゃするので、各要素に適用する関数をf
という変数に束縛しました。
これは以下のように書いても動きます。
iex> Enum.filter([1,2,3,4,5], fn x -> rem(x, 2) == 0 end)
[2, 4]
そしてこちらの書き方のほうが圧倒的に多く使われるので、この書き方に慣れてください。
また、&を使って書くこともできます。
iex> Enum.filter([1,2,3,4,5], & rem(&1, 2) == 0)
[2, 4]
こちらもよく見かけるので慣れておくと吉です。
&の説明は以下をご参照ください。
今日の闘魂
今日は、『孟子』から言葉を引きます。
志は氣の帥なり(孟子)
解説は、こちらをご参照ください。
猪木さん流に言うと、「もし、そこに夢がなければ、そこに夢をつくって生きてきた」ということです。
『アントニオ猪木 最後の闘魂』より引用します。
夢があるから、人は生きていける。夢があるから、強く生きていけるのだ。
志(夢)を持ち、その志(夢)の実現のため、一歩踏み出す ーー 元氣があればなんでもできる! なのです。
元氣、やる氣や氣力、氣骨は時には、挫けそうになる時があります。
その氣を支えるのが、志(夢)です。
「志は氣の帥なり」と「元氣があればなんでもできる!」は2つで1つのことを言っているのです。
みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。
さいごに
Enum.filter/2を説明しました。
闘魂の意味は、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
$\huge{1、2、3 ぁっダー!}$
Elixir Advent Calendar 3の8日目は、自身が25日分のコラムを綴り、他者にもソレをオススメしている @torifukukaiou さんが、毎度「元氣ですかーーーーッ!!!」から始まるElixirワンポイントレッスン💁♂️https://t.co/IgYnKhEhtN
— piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) December 8, 2022
今回は、Enum .filterという、Enumシリーズではmapの次に重要な関数😌 pic.twitter.com/zdewBYoSYq
$\huge{元氣があればなんでもできる!}$
-
図は、https://excalidraw.com/ を使って作成しています。スゴ腕ハッカーが書いたかのような手書き風の絵が書けるので最近の私のお気に入りツールです。 ↩