この記事は「Elixir Advent Calendar 2023」11日目の記事です
東京にいるけどfukuokaexのYOSUKEです。
普段は 合同会社TheWaggle で教材開発・システム開発・研修講師などマルチに活動してます。
このシリーズでは、文系ですらない、体育会系でも始められるプログラミング学習 というテーマで元自衛官だった僕が
自衛官からエンジニアになってもらいたいという気持ちを込めて、普段は大人しいですが、このコラムシリーズでは、あえて、体育会系のノリで、貴様ら理屈で覚えるなら体で覚えろ!というノリで書いてみたいと思います。
なので、初学者向けですが、理論は後回し、まずは動かして体感しろってノリの第11回目です。
それでは、いくぞ!
関数の調べ方「公式リファレンス」を読もう
前回、貴様らに便利な道具の使い方を1つ教えてやったのは覚えているな?
タプルをリストに変換するという便利な道具だ、この道具には、いろいろな種類の道具がある。
この道具のことを「関数
」という。
この関数を色々使うことで便利に渡す方法が作れるのだ。
そこで、貴様らにはまず関数の調べ方を教えてやろう。
まずは、下記のリンクが公式のドキュメントの場所だ。
https://hexdocs.pm/elixir/Kernel.html
ここで、左上に検索フォームがあり、その下にはElixir
と記載があり、その下にはさらにv.1.15.7
とバージョン番号が書かれている。自分の利用しているElixirのバージョンに合わせろ、このバージョンが違うのは貴様の銃が20式なのか89式、または64式かの違いがある。
仮に貴様が使っている銃が20式にも関わらず、64式を調べていたとしよう。その違いは弾薬の違いにより動かないのと同じで、バージョンが違うものを見ているのは致命傷だ!
バージョンの調べ方がわからないだと! いいだろう。特別に教えてやろう。LivebookではSystem.version()
という関数を使う事で教えてくれる
System.version()
1.15.7
ここで、たとえば前回利用したTuple.to_list()
について知りたいとしよう。
Tuple
を扱っているのでTuple
で検索をしろ!
右上の検索フォームでTuple
で調べると、一番上にTuple (module)
が表示されるのでそれをクリックしろ。
これで、貴様はTupleに関する便利な道具(関数)についての情報がまとまったページを見ることができるわけだ。
今回は、TupleをListに変更したいから、Tuple.to_list()
と、とてもわかりやすい名前で書かれているものを見るんだ。
以下のように書かれてるのが見えたか?
to_list(tuple)
@spec to_list(tuple()) :: list()
Converts a tuple to a list.
Returns a new list with all the tuple elements.
Inlined by the compiler.
Examples
tuple = {:foo, :bar, :baz}
Tuple.to_list(tuple)
[:foo, :bar, :baz]
よし、読み方を教えよう。
to_list(tuple)
のto_list
の部分は道具の名前だ、これを関数名
と呼ぶ。
to_list(tuple)
の()
の中にあるtuple
とは道具を使う時に入れる値だ。今回はtuple
と書かれているから{}
この形が最低でも必要なわけだ。
もし、この()
カッコの中に何も無い場合は、何も入れずに使える関数ということだ。
もし、この()
の中に、( tuple \\ {})
のように\\
という記号があれば、それは()
の中に何も入れなかった場合、何もしなくても\\
この記号の右隣りにある値がデフォルトで入るという意味だ。
{tuple \\{})
この例だと、tupleを引数に入れなかった場合はデフォルトで値の無い{}
tupleがデフォルトで入ってくるという意味だ。
わかったか?
@spec to_list(tuple()) :: list()
これは、tupleを入れたらlistが帰ってくることを表してる
例えば、@spec sum(tuple()) :: number()
この場合はtupleを入れたら数値が帰ってくることを意味してる。
詳しくは色々あるが、今の貴様らにはまだ早い、今のところは、上記の意味がわかれば充分だ!下手な詮索はよせ、貴様らが情報省隊なら話しは別だ! しかし、情報ではない貴様らには詮索は禁物だ!
この部分は単なる説明だ、この関数が何をしてくれるものか説明が英語でされているだけだ。
Converts a tuple to a list.
Returns a new list with all the tuple elements.
Inlined by the compiler.
何? 英語は読めないだと?
貴様、まだそんな甘えたことを言っているのか!今の戦争は情報戦だ、いや、第2時世界大戦の時ですでに情報戦!
日本は情報戦において負けたのをもう忘れたのか!
貴様らがエンジニアを覚えるのはもはや、国防上に必要な知識だ、もはや武器だけで戦争をしていると思うな!
英語だろうが、プログラミング言語だろうが、我々はもはや多言語を制する必要があることを忘れるな!
そして、最後に、使い方の例が載っている。ここまで親切に書かれている。ありがたく思え!
tuple = {:foo, :bar, :baz}
Tuple.to_list(tuple)
[:foo, :bar, :baz]
何? 意味がわからないだと!
貴様らはどこまで腑抜けているのだ、わからないと言う前になぜ、試さない!
これを動かしたところで、失敗しても誰も死ぬわけじゃない、こんな生ぬるい訓練に怖気付いたのか?
そんな無駄なことに悩む前にさっさとコードを動かして試してみろ!わかったな。
- はい!
よーし、それでは 次回、このリストを使うことで便利にする関数を読んで、いよいよ動かすぞ。今日はここまで、それでは次回 Part12でまた会おう!