LoginSignup
14
0

More than 1 year has passed since last update.

$\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なものの長さより長くなることはありません。

言葉にするとなんだか難しいかもしれませんが、こちらの図をみてください。

image.png

上図の説明をします。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で確かめてみましょう。

CMD
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]の変換ができました:tada::tada::tada::tada::tada:

ワンポイントレッスン

ここでは、絵がごちゃごちゃするので、各要素に適用する関数を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]

こちらもよく見かけるので慣れておくと吉です。
&の説明は以下をご参照ください。

今日の闘魂

今日は、『孟子』から言葉を引きます。


志は氣のすいなり(孟子)

解説は、こちらをご参照ください。
猪木さん流に言うと、「もし、そこに夢がなければ、そこに夢をつくって生きてきた」ということです。
:book:アントニオ猪木 最後の闘魂:book:より引用します。

夢があるから、人は生きていける。夢があるから、強く生きていけるのだ。

志(夢)を持ち、その志(夢)の実現のため、一歩踏み出す ーー 元氣があればなんでもできる! なのです。
元氣、やる氣や氣力、氣骨は時には、挫けそうになる時があります。
その氣を支えるのが、志(夢)です。
「志は氣の帥なり」と「元氣があればなんでもできる!」は2つで1つのことを言っているのです。

みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。

image.png

さいごに

Enum.filter/2を説明しました。

闘魂の意味は、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。

$\huge{1、2、3 ぁっダー!}$



Twitter


$\huge{元氣があればなんでもできる!}$

  1. 図は、https://excalidraw.com/ を使って作成しています。スゴ腕ハッカーが書いたかのような手書き風の絵が書けるので最近の私のお気に入りツールです。

14
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
0