Elixir Language
Types intégrés
Recherche…
Nombres
Elixir est livré avec des nombres entiers et des nombres à virgule flottante . Un littéral entier peut être écrit au format décimal, binaire, octal et hexadécimal.
iex> x = 291
291
iex> x = 0b100100011
291
iex> x = 0o443
291
iex> x = 0x123
291
Comme Elixir utilise l'arithmétique bignum, la plage d'entiers n'est limitée que par la mémoire disponible sur le système .
Les nombres à virgule flottante sont à double précision et respectent la spécification IEEE-754.
iex> x = 6.8
6.8
iex> x = 1.23e-11
1.23e-11
Notez qu'Elixir prend également en charge la forme exposant pour les flottants.
iex> 1 + 1
2
iex> 1.0 + 1.0
2.0
Nous avons d'abord ajouté deux nombres entiers, et le résultat est un entier. Plus tard, nous avons ajouté deux nombres à virgule flottante et le résultat est un nombre à virgule flottante.
La division en Elixir renvoie toujours un nombre à virgule flottante:
iex> 10 / 2
5.0
De la même manière, si vous ajoutez, soustrayez ou multipliez un nombre entier par un nombre à virgule flottante, le résultat sera en virgule flottante:
iex> 40.0 + 2
42.0
iex> 10 - 5.0
5.0
iex> 3 * 3.0
9.0
Pour la division entière, on peut utiliser la fonction div/2
:
iex> div(10, 2)
5
Les atomes
Les atomes sont des constantes qui représentent un nom de quelque chose. La valeur d'un atome est son nom. Un nom d'atome commence par un deux-points.
:atom # that's how we define an atom
Le nom d'un atome est unique. Deux atomes avec les mêmes noms sont toujours égaux.
iex(1)> a = :atom
:atom
iex(2)> b = :atom
:atom
iex(3)> a == b
true
iex(4)> a === b
true
Les booléens true
et false
sont en réalité des atomes.
iex(1)> true == :true
true
iex(2)> true === :true
true
Les atomes sont stockés dans une table d'atomes spéciale. Il est très important de savoir que cette table n'est pas récupérée. Donc, si vous voulez (ou accidentellement c'est un fait) créer constamment des atomes - c'est une mauvaise idée.
Binaires et Bitstrings
Les fichiers binaires dans elixir sont créés à l'aide de la construction Kernel.SpecialForms << >> .
C'est un outil puissant qui rend Elixir très utile pour travailler avec des protocoles et des encodages binaires.
Les fichiers binaires et les chaînes de bits sont spécifiés à l'aide d'une liste d'entiers ou de valeurs de variable séparés par des virgules, auxquels sont ajoutés "<<" et ">>". Ils sont composés d'unités, soit un groupement de bits, soit un regroupement d'octets. Le regroupement par défaut est un octet unique (8 bits), spécifié à l'aide d'un entier:
<<222,173,190, 239>> # 0xDEADBEEF
Les chaînes Elixir sont également converties directement en binaires:
iex> <<0, "foo">>
<<0, 102, 111, 111>>
Vous pouvez ajouter des "spécificateurs" à chaque "segment" d'un binaire, ce qui vous permet de coder:
- Type de données
- Taille
- Endianness
Ces spécificateurs sont encodés en suivant chaque valeur ou variable avec l'opérateur "::":
<<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
Les types de données disponibles que vous pouvez utiliser sont les suivants:
- entier
- flotte
- bits (alias pour chaîne de bits)
- chaîne de bits
- binaire
- octets (alias pour binaire)
- utf8
- utf16
- utf32
Sachez que lors de la spécification de la taille du segment binaire, celle-ci varie en fonction du type choisi dans le spécificateur de segment:
- entier (par défaut) 1 bit
- flotteur 1 bit
- binaire 8 bits