Fork me on GitHub

基本

入門、基本データ型、そして基本的な演算。

目次

入門

Elixirのインストール

各OS向けのインストール方法は Elixir-lang.org 上のInstalling Elixir で探すことができます。

Elixirがインストールされたら簡単にバージョンを確認できます。

% elixir -v
Erlang/OTP 20 [erts-8.0.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir 1.3.4

対話モード

Elixirにはiexという対話シェルが付属しており、入力したそばからElixirの式を評価することができるようになっています。

対話モードを開始するには、iexを起動しましょう:

Erlang/OTP 20 [erts-8.0.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)
iex>

先に進み、試しにいくつかの簡単な式を入力してみましょう:

iex>
2+3
5
iex> 2+3 == 5
true
iex> String.length("The quick brown fox jumps over the lazy dog")
43

それぞれの式をまだ理解していなくても心配することはありませんが、うまくいけばやり方は分かるでしょう。

基本データ型

整数

iex> 255
255

2進数、8進数、16進数は組み込みで対応しています:

iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31

浮動小数

Elixirでは、浮動小数点数は少なくとも1桁の数字とその後に続く小数を必要とし、 64ビットの倍精度で、指数eに対応しています:

iex> 3.14 
3.14
iex> .14 
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10

真理値

Elixirは真理値としてtruefalseを提供しています。また、falsenil以外は真とみなされます:

iex> true
true
iex> false
false

アトム

アトムは自身の名前がそのまま値になる定数です。Rubyをご存知なら、シンボルと同義になります:

iex> :foo
:foo
iex> :foo == :bar
false

真理値のtruefalseはそれぞれ、アトムの:true:falseでもあります。

iex> true |> is_atom
true
iex> :true |> is_boolean
true
iex> :true === true
true

Elixirのモジュールの名前もまたアトムです。MyApp.MyModuleは、そのようなモジュールが宣言されていなくても有効なアトムです。

iex> is_atom(MyApp.MyModule)
true

アトムは、Erlangのビルトインのものも含めたライブラリのモジュールを参照するのにも使われます。

iex> :crypto.rand_bytes 3
<<23, 104, 108>>

文字列

文字列はElixirではUTF-8エンコードされていて、二重引用符で囲みます:

iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"

文字列は改行やエスケープシーケンスに対応しています:

iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"

また、Elixirにはより複雑なデータ型も含まれています。コレクションや関数について学ぶときにそれらについても詳しく学びます。

基本的な演算

算術

予想されている通りかもしれませんが、Elixirは基本的な演算子である+, -, *, /を提供しています。重要なので言及しておきますと、/は常に浮動小数を返します:

iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0

整数同士の割り算や剰余が必要な場合、Elixirにはこれを解く2つの便利な関数があります:

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

論理

Elixirは||&&!という論理演算子を用意しており、これらはどんな型にも対応しています:

iex> -20 || true
-20
iex> false || 42
42

iex> 42 && true
true
iex> 42 && nil
nil

iex> !42
false
iex> !false
true

さらに、最初の引数が真理値(truefalse)で なければならない 3つの演算子があります:

iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error

比較

Elixirには私たちが慣れている全ての比較演算子が備わっています: ==, !=, ===, !==, <=, >=, < そして > です。

iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true

整数と浮動小数を厳密に比べるには === を使います:

iex> 2 == 2.0
true
iex> 2 === 2.0
false

Elixirの重要な特徴はどんな2つの型でも比べられるということで、これは特にソートにおいて有用です。ソートされる順序を覚える必要はありませんが、順序を気にするのは重要なことです:

number < atom < reference < functions < port < pid < tuple < maps < list < bitstring

これは他の言語では見られないかもしれない、正当で興味深い比較を引き起こします:

iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false

文字列への式展開

Rubyを使っているなら、Elixirでの式展開は見覚えがあるでしょう:

iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"

文字列の連結

文字列連結は<>演算子を利用します:

iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"

このページをシェアする