Ricerca…


Numeri

L'elisir viene fornito con numeri interi e numeri in virgola mobile . Un intero letterale può essere scritto nei formati decimale, binario, ottale ed esadecimale.

iex> x = 291
291

iex> x = 0b100100011
291

iex> x = 0o443
291

iex> x = 0x123
291

Poiché Elixir utilizza l'aritmetica bignum, l'intervallo dell'intero è limitato solo dalla memoria disponibile sul sistema .

I numeri in virgola mobile sono a doppia precisione e seguono le specifiche IEEE-754.

iex> x = 6.8
6.8

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

Nota che Elixir supporta anche il modulo esponenziale per i float.

iex> 1 + 1
2

iex> 1.0 + 1.0
2.0

Per prima cosa abbiamo aggiunto due numeri interi e il risultato è un numero intero. Successivamente abbiamo aggiunto due numeri in virgola mobile e il risultato è un numero in virgola mobile.

Dividere in Elixir restituisce sempre un numero in virgola mobile:

iex> 10 / 2
5.0

Allo stesso modo, se aggiungi, sottragga o moltiplichi un numero intero con un numero in virgola mobile, il risultato sarà in virgola mobile:

iex> 40.0 + 2
42.0

iex> 10 - 5.0
5.0

iex> 3 * 3.0
9.0

Per la divisione in interi, si può usare la funzione div/2 :

iex> div(10, 2)
5

atomi

Gli atomi sono costanti che rappresentano un nome di qualche cosa. Il valore di un atomo è il suo nome. Il nome di un atomo inizia con i due punti.

:atom   # that's how we define an atom

Il nome di un atomo è unico. Due atomi con gli stessi nomi sono sempre uguali.

iex(1)> a = :atom
:atom

iex(2)> b = :atom
:atom

iex(3)> a == b
true

iex(4)> a === b
true

Booleans true e false , in realtà sono atomi.

iex(1)> true == :true
true

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

Gli atomi sono memorizzati in una tabella speciale di atomi. È molto importante sapere che questa tabella non è raccolta dalla spazzatura. Quindi, se vuoi (o accidentalmente è un fatto) creare costantemente atomi, è una cattiva idea.

Binari e Bitstring

I binari in elixir sono creati usando il costrutto Kernel.SpecialForms << >> .

Sono uno strumento potente che rende Elixir molto utile per lavorare con i protocolli e le codifiche binari.

I binari e le stringhe di bit vengono specificati utilizzando un elenco delimitato da virgole di numeri interi o valori variabili, con la dicitura "<<" e ">>". Sono composti da 'unità', un raggruppamento di bit o un raggruppamento di byte. Il raggruppamento predefinito è un singolo byte (8 bit), specificato utilizzando un numero intero:

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

Le stringhe di elisir convertono anche direttamente in binari:

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

Puoi aggiungere "specificatori" a ciascun "segmento" di un binario, consentendoti di codificare:

  • Tipo di dati
  • Taglia
  • endianness

Questi specificatori sono codificati seguendo ogni valore o variabile con l'operatore "::":

<<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

I tipi di dati disponibili che puoi utilizzare sono:

  • numero intero
  • galleggiante
  • bit (alias per bitstring)
  • bitstring
  • binario
  • byte (alias per binario)
  • utf8
  • UTF16
  • UTF-32

Tieni presente che quando si specifica la 'dimensione' del segmento binario, varia in base al 'tipo' scelto nello specificatore di segmento:

  • intero (predefinito) 1 bit
  • galleggiante 1 bit
  • binario 8 bit


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow