Elixir Basics - 1. Basic Data Types

Elixir Basics - 1. Basic Data Types Hero Image

Integers

Elixir supports a variety of different Integers.

Decimal

iex(1)> 14
14
iex(19)> i(14)
Term
  14
Data type
  Integer
Reference modules
  Integer
Implemented protocols
  IEx.Info, Inspect, List.Chars, String.Chars

Underscores can also be used with Decimal numbers when writing large numbers, making them easier to read.

For example, one million can be written like so

iex(5)> 1_000_000
1000000

Hexadecimal

iex(2)> 0xcafe
51966

Octal

iex(3)> 0o765
501

Binary

iex(4)> 0b1010
10

Floats

A Float or Floating-point number is denoted by using a decimal point.

iex(6)> 5.0
5.0
Term
  5.0
Data type
  Float
Reference modules
  Float
Implemented protocols
  IEx.Info, Inspect, List.Chars, String.Chars

Floats also support exponents by using the letter e after the last number.

iex(16)> 3.14e-2
0.0314

Booleans

Elixir supports both true and false as booleans

iex(17)> true
true
iex(18)> false
false
iex(19)>
Term
  true
Data type
  Atom
Reference modules
  Atom
Implemented protocols
  IEx.Info, Inspect, List.Chars, String.Chars

If you are paying attention, you will notice that when you inspect i(true) Elixir says that its data type is of type Atom. This is because booleans in Elixir are also atoms

iex(25)> is_atom(true)
true
iex(26)> is_atom(false)
true

Atoms

An Atom is a constant whose name is its value.

iex(27)> :foo
:foo
iex(37)> i(:foo)
Term
  :foo
Data type
  Atom
Reference modules
  Atom
Implemented protocols
  IEx.Info, Inspect, List.Chars, String.Chars
iex(33)> is_boolean(:true)
true
iex(34)> is_boolean(:false)
true
iex(35)> :true === true
true
iex(36)> :false === false
true

Strings

Strings are denoted with double quotes.

iex(38)> "Hello, World"
"Hello, World"
iex(39)> i("Hello, World")
Term
  "Hello, World"
Data type
  BitString
Byte size
  12
Description
  This is a string: a UTF-8 encoded binary. It's printed surrounded by
  "double quotes" because all UTF-8 encoded code points in it are printable.
Raw representation
  <<72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100>>
Reference modules
  String, :binary
Implemented protocols
  Collectable, IEx.Info, Inspect, List.Chars, String.Chars

Elixir also supports string interpolation, like so:

iex(41)> string = "World"
"World"
iex(42)> "Hello, #{string}"
"Hello, World"

Strings can be printed using IO.puts() from the IO module.

iex(43)> IO.puts("Hello, World")
Hello, World
:ok

Sources