技術メモ

プログラミングとか電子工作とか

Elixir入門(第二章 基本型、文字列まで)

f:id:ysmn_deus:20190122112104p:plain

どうも、靖宗です。
前回に引き続きelixir入門。(Elixirなのかelixirなのか・・・)

基本型

  • Integers
  • Floats
  • Booleans
  • Strings
  • Lists

このへんは大体どの言語でも一緒?分かりやすいです。

  • Tuples

Python使ってる身からするときもい

  • Atoms

なんやこれ。あとで詳細を記載します。

四則演算

iex> 1 + 2
3
iex> 5 * 5
25
iex> 10 / 2
5.0

大体おなじ。ただし割り算だけFloatで返ってくる。
div(divide、割り算)、rem(remain、余り)関数も使える。

iex> div(10, 2)
5
iex> div 10, 2
5
iex> rem 10, 3
1

括弧を省略できるらしいけど個人的には括弧があった方が良いような・・・
色々コードを書いてみてから考えます。
その他n進法表記やe表記も使えるそうです。

Identifying functions(関数の確認)

章のタイトルが意味不明なので英語も記載。たぶん「関数の識別」とかのほうがいいんじゃなかろうか・・・
関数は名前とアリティと呼ばれるものでユニークに定義されるそうです。
解釈が間違ってなければアリティ=引数の数ですので

hogehoge/1

とすると引数1個のhogehogeという関数という所です。
とりあえず今のところはまだ関数が出てきてないのでドキュメントの書き方作法的に思っておきます。
(違ってたらまた訂正します。)

Atoms(アトム)

さっき謎だったやつ。この章よんでもピンとこない。

An atom is a constant 

定数ってことでいいのかな?
エイリアスって概念も出てきてるけどココでは無視!

文字列

スルーするつもりだったけど、引っかかりが。

iex> "hellö #{:world}"
"hellö world"

('ω')。o(????????????)
アトムあたりが謎。進めてるうちにその有用性か何かが見えてくると思うのでスキップ!

文字列の出力には IO モジュールの IO.puts/1 関数を使用します。
iex> IO.puts "hello\nworld"
hello
world
:ok

いわゆるprintがIO.putsにあたるのかな?
IO.putsが:okを返している。そこに留意しろと書いてある割にはそれ以上の事が書いてない。
つまりAtomsは返値などで決まった値を返す時とかに柔軟に使われる概念?
例:問題無い時は:okを返し、エラーがあるときは:errorを返し、マルチスレッドで強制終了されたときは:interruptを返すとか。
まだ妄想の域ですが、推測しながら間違えて覚えるアクティブラーニングなスタイルで行きましょう。