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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow