#ここまでのあらまし
ここまで、Enumを使った記法や簡単な関数のモジュール化、PJとして扱うところまでをやった。
こちらのサイト を参照しながら体系的理解について備忘録的にドキュメントをしたためていきます。
本題、Elixirの基本
わたしにとって引っかかった、覚えるべきところを記していくのでElixirの基本、あらましについてすべてを記述していくわけではありません。
四則演算
iex > (1 + 2) * 3 - 4
5
四則演算は、カッコで囲まれたところや乗法除法から計算していく模様。
中高の数学と同じといえそうです。
除法の/は結果が整数であっても浮動小数点を以て扱うよう。
これに対して答えを整数で返すのがdiv、除法の余りを返すのがrem。
iex > div(10, 2)
5
iex > div 10, 2
5
iex > rem 10, 3
1
ここで、基本的な型についてわたしに引っかかったものを備忘録。
”プログラミングElixir”という書籍がここのあたりの記述があかるかったけれど、プログラミング入門者のわたしにはいささか内容が緻密で読みづらかったので後にまわすことにしています。
論理値 true
アトム :atom
リスト [1,2,3]
タプル{1,2,3}
論理値かどうか確かめるのがis_boolean/1関数。
iex > is_boolean(1 > 2)
true
iex > is_boolean(1)
false
ヘルプを表示するのがh。自学自習、Elixir学習において避けて通れない英語読解のために役に立ちそう。ガンガン使っていこう。
iex > h is_number/1
入力したタームが整数か浮動小数であった場合true、それ以外はfalseを返す、といったところでしょうか。
アトムはそれ自体がそのまま値になる。
iex > :atom
:atom
iex > :atom == :hello
false
is_atom/1やis_boolean/1といった関数がありますがここでは例示に対する理解が完璧でないため割愛します。
Elixirのモジュール名もアトム。モジュールをつくるときは大文字から始める。
iex(14)> is_atom(String)
"htrue
iex(15)> is_atom(MyModule)
true
文字列は””で囲む。
アトムを文字列に含めるときは#{}で囲む。
iex > "hello"
"hello"
iex > "hello #{world}"
** (CompileError) iex:17: undefined function world/0
(elixir) src/elixir_bitstring.erl:142: :elixir_bitstring.expand_expr/4
(elixir) src/elixir_bitstring.erl:27: :elixir_bitstring.expand/8
(elixir) src/elixir_bitstring.erl:20: :elixir_bitstring.expand/4
iex > "hello #{:world}"
"hello world"
↑アトムとして扱うための:を忘れたのでコンパイルエラーが出ています。
文字列には改行が含められる。またエスケープシーケンス\nで加えてもよい。
IO.puts/2で示されるアトム:okは、正しく入力できた際の戻り値。
iex > IO.puts"hello/nworld"
hello/nworld
:ok
iex > IO.puts"hello
... > world
... > "
hello
world
:ok
あれ。ちょっと改行のしくみに疑問。
バイト数を調べるのがbyte_size/1、文字数を調べるのがString.length/1。
iex > byte_size("hello")
5
iex > byte_size("健康")
6
iex > String.length("hello")
5
iex(23)> String.length("健康")
2
編集後記
たいへんわかりやすくまとまっているブログを見つけたので理解をあたらしくすることができています。
続きは次のドキュメントに切り分けます。
全然関係ないんですがHHKB Lite 2 US配列を買いました。
音楽業界ってアップルのテンキー付きJIS配列が標準かつわたしのMacBook ProもJIS配なので、まだまだ慣れないですが書き始めてエンジンかかってくるとタイピングが楽しくなってきます。
めざせ後継メインマシンUSキー化&HHKB Professional購入。
うまずたゆまず、頑張ります。
Kento Mizuno