この記事は「Elixir Advent Calendar 2023」4日目の記事です
東京にいるけどfukuokaexのYOSUKEです。
普段は 合同会社TheWaggle で教材開発・システム開発・研修講師などマルチに活動してます。
このシリーズでは、文系ですらない、体育会系でも始められるプログラミング学習 というテーマで元自衛官だった僕が
自衛官からエンジニアになってもらいたいという気持ちを込めて、普段は大人しいですが、このコラムシリーズでは、あえて、体育会系のノリで、貴様ら理屈で覚えるなら体で覚えろ!というノリで書いてみたいと思います。
なので、初学者向けですが、理論は後回し、まずは動かして体感しろってノリの第4回目です。
それでは、いくぞ!
前回やったことは「パターンマッチ」だ!
前回やった 1 = 1
右辺と左辺が同じになるは 数学の =
と同じようにと言ったが、実はパターンマッチだ! だから数学の=
よりももっと色々なものに対して右と左が一緒かどうかを評価することができる!
実際に見せてやろう。それではいくぞ!
[] = []
%{} = %{}
{} = {}
これら、すべて右も左も同じだ!だからエラーは出ない!
班長! さっそく、自分もパターンマッチさせてみたのですが、警告が出ました。なぜですか? だとぉ!
() = ()
warning: invalid expression (). If you want to invoke or define a function, make sure there are no spaces between the function name and its arguments. If you wanted to pass an empty block or code, pass a value instead, such as a nil or an atom
iex:1:6
nil
きさま!死にたいのかぁ! 上官の命令を待たずに勝手な判断で動くなぁ!
なんでもかんでも、右と左を合わせておけばパターンマッチするってものではない!
いいか、きさまら。銃で扱っているものは何だ? そう弾だ。弾には種類があり、何でもかんでも弾なら使えるものではないだろう?
例えば、機関銃の7.62mmの弾を 89式小銃では扱えないだろう?あれは、5.56mmだからな、このように銃の弾にも種類があるように、プログラミングで扱うパターンマッチできる値にも種類があるんだ。
ここでマッチさせられるものは、銃の弾のようなものだ。種類があるんだ、例えば、以下のような型がある。理屈は後だ、まずはこう言うものがあると覚えておけ。
アトム
:atom #頭にコロンをつけた自分の名前が値になる
タプル
{:atom}
{:ok, 1}
{} #{}で囲った中に値を持てる、値は,で区切っていくつも入れられる
数値
1
123
0.1
まだ他にもあるが、頭の弱い貴様らにはまずはこの3つを覚えるので精一杯だろう。
まずはこの3つを覚えろ、いいなわかったか。
よし、今日はここまで、それでは次回 Part5でまた会おう!