Elisir - Tipi di dati

Per utilizzare qualsiasi lingua, è necessario comprendere i tipi di dati di base supportati dalla lingua. In questo capitolo, discuteremo 7 tipi di dati di base supportati dal linguaggio elisir: interi, float, booleani, atomi, stringhe, liste e tuple.

Tipi numerici

Elixir, come qualsiasi altro linguaggio di programmazione, supporta sia interi che float. Se apri la tua shell elisir e inserisci qualsiasi numero intero o float come input, restituirà il suo valore. Per esempio,

42

Quando il programma di cui sopra viene eseguito, produce il seguente risultato:

42

Puoi anche definire numeri in base ottale, esadecimale e binaria.

Octal

Per definire un numero in base ottale, anteponilo a '0o'. Ad esempio, 0o52 in ottale è equivalente a 42 in decimale.

Esadecimale

Per definire un numero in base decimale, anteponilo a "0x". Ad esempio, 0xF1 in esadecimale equivale a 241 in decimale.

Binario

Per definire un numero in base binaria, anteponilo a "0b". Ad esempio, 0b1101 in binario equivale a 13 in decimale.

Elixir supporta la doppia precisione a 64 bit per i numeri in virgola mobile. E possono anche essere definiti utilizzando uno stile di esponenziazione. Ad esempio, 10145230000 può essere scritto come 1.014523e10

Atomi

Gli atomi sono costanti il ​​cui nome è il loro valore. Possono essere creati utilizzando il simbolo del colore (:). Per esempio,

:hello

Booleani

Elisir supporta true e falsecome booleani. Entrambi questi valori sono infatti associati agli atomi: true e: false rispettivamente.

stringhe

Le stringhe in Elixir vengono inserite tra virgolette doppie e sono codificate in UTF-8. Possono estendersi su più righe e contenere interpolazioni. Per definire una stringa è sufficiente inserirla tra virgolette doppie -

"Hello world"

Per definire stringhe multilinea, usiamo una sintassi simile a python con virgolette triple doppie -

"""
Hello
World!
"""

Approfondiremo le stringhe, i binari e gli elenchi di caratteri (simili alle stringhe) nel capitolo sulle stringhe.

Binari

I binari sono sequenze di byte racchiusi tra << >> separati da una virgola. Per esempio,

<< 65, 68, 75>>

I binari vengono utilizzati principalmente per gestire i dati relativi a bit e byte, se ne hai. Per impostazione predefinita, possono memorizzare da 0 a 255 in ogni valore. Questo limite di dimensione può essere aumentato utilizzando la funzione di dimensione che dice quanti bit sono necessari per memorizzare quel valore. Per esempio,

<<65, 255, 289::size(15)>>

Liste

Elixir utilizza le parentesi quadre per specificare un elenco di valori. I valori possono essere di qualsiasi tipo. Per esempio,

[1, "Hello", :an_atom, true]

Le liste sono dotate di funzioni integrate per la testa e la coda della lista denominate hd e tl che restituiscono rispettivamente la testa e la coda della lista. A volte, quando crei un elenco, restituirà un elenco di caratteri. Questo perché quando elixir vede un elenco di caratteri ASCII stampabili, lo stampa come un elenco di caratteri. Tieni presente che le stringhe e gli elenchi di caratteri non sono uguali. Discuteremo ulteriormente gli elenchi nei capitoli successivi.

Tuple

Elixir utilizza le parentesi graffe per definire le tuple. Come le liste, le tuple possono contenere qualsiasi valore.

{ 1, "Hello", :an_atom, true

A questo punto sorge una domanda: perché fornire entrambi lists e tuplesquando funzionano entrambi allo stesso modo? Bene, hanno implementazioni diverse.

  • Gli elenchi vengono effettivamente memorizzati come elenchi collegati, quindi gli inserimenti e le eliminazioni sono molto veloci negli elenchi.

  • Le tuple, d'altra parte, sono archiviate in blocchi di memoria contigui, il che rende l'accesso più veloce ma aggiunge un costo aggiuntivo per inserimenti e cancellazioni.