サーチ…


数字

エリクシールには整数浮動小数点数が付属しています整数リテラルは、10進数、2進数、8進数、16進数の形式で記述できます。

iex> x = 291
291

iex> x = 0b100100011
291

iex> x = 0o443
291

iex> x = 0x123
291

Elixirはbignum演算を使用するため、整数の範囲はシステム上の使用可能なメモリによってのみ制限されます

浮動小数点数は倍精度で、IEEE-754仕様に準拠しています。

iex> x = 6.8
6.8

iex> x = 1.23e-11
1.23e-11

Elixirは浮動小数点数の指数形式もサポートしています。

iex> 1 + 1
2

iex> 1.0 + 1.0
2.0

最初に2つの整数を追加し、結果は整数になります。後で2つの浮動小数点数を追加し、結果は浮動小数点数になります。

エリクシールを分割すると常に浮動小数点数が返されます:

iex> 10 / 2
5.0

同様に、浮動小数点数で整数を加算、減算、または掛け合わせると、結果は浮動小数点になります。

iex> 40.0 + 2
42.0

iex> 10 - 5.0
5.0

iex> 3 * 3.0
9.0

整数除算の場合、 div/2関数を使用できます。

iex> div(10, 2)
5

原子

原子は何かの名前を表す定数です。原子の値はその名前です。原子名はコロンで始まります。

:atom   # that's how we define an atom

原子の名前はユニークです。同じ名前の2つの原子は常に等しい。

iex(1)> a = :atom
:atom

iex(2)> b = :atom
:atom

iex(3)> a == b
true

iex(4)> a === b
true

truefalseブーリアンは、実際に原子です。

iex(1)> true == :true
true

iex(2)> true === :true
true

原子は特別原子表に格納されます。このテーブルがガベージコレクションされていないことを知ることは非常に重要です。だから、あなたが(あるいは間違いなく事実である)絶えず原子を作りたいなら、それは悪い考えです。

バイナリとビットストリング

エリクシルのバイナリは、Kernel.SpecialFormsの構造体<< >>を使用して作成されます

彼らはElixirをバイナリプロトコルとエンコーディングの作業に非常に役立つ強力なツールです。

バイナリとビットストリングは、 "<<"と ">>"が付いた整数または変数値のカンマ区切りリストを使用して指定します。それらは「単位」で構成され、ビットのグループ化またはバイトのグループ化が行われます。デフォルトのグループ化は1バイト(8ビット)で、整数を使用して指定されます。

<<222,173,190, 239>> # 0xDEADBEEF

エリクシール文字列もバイナリに直接変換されます:

iex> <<0, "foo">>
<<0, 102, 111, 111>>

バイナリの各「セグメント」に「指定子」を追加すると、エンコードすることができます。

  • データ・タイプ
  • サイズ
  • エンディアン

これらの指定子は、 "::"演算子を使用して各値または変数の後にエンコードされます。

<<102::integer-native>>
<<102::native-integer>> # Same as above
<<102::unsigned-big-integer>>
<<102::unsigned-big-integer-size(8)>>
<<102::unsigned-big-integer-8>> # Same as above
<<102::8-integer-big-unsigned>>
<<-102::signed-little-float-64>> # -102 as a little-endian Float64
<<-102::native-little-float-64>> # -102 as a Float64 for the current machine

使用できるデータ型は次のとおりです。

  • 整数
  • 浮く
  • ビット(ビットストリングのエイリアス)
  • ビットストリング
  • バイナリ
  • バイト(バイナリのエイリアス)
  • utf8
  • utf16
  • utf32

バイナリセグメントの 'サイズ'を指定するときは、セグメント指定子で選択された 'タイプ'によって異なります。

  • 整数(デフォルト)1ビット
  • 1ビット浮動小数点
  • バイナリ8ビット


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow