Elisir - Operatori vari

Oltre agli operatori di cui sopra, Elixir fornisce anche una serie di altri operatori che lo rendono un linguaggio piuttosto potente.

Operatore di concatenazione

Elixir fornisce un operatore di concatenazione di stringhe, '<>'. Viene utilizzato per concatenare 2 stringhe. Per esempio,

IO.puts("Hello"<>" "<>"world")

Il comando precedente genera il seguente risultato:

Hello World

Incontro

L'operatore di corrispondenza, '='fa uso della funzione di corrispondenza dei modelli del linguaggio. Discuteremo questo operatore in dettaglio in un capitolo successivo sul Pattern Matching.

Si noti che = non è solo un operatore di assegnazione. Quando abbiamo il valore di sinistra come variabile e il valore di destra come letterale o un'altra variabile, il valore da destra è vincolato alla variabile, cioè l'assegnazione ha luogo. Ma se abbiamo una variabile a destra e una letterale a sinistra, avviene la corrispondenza del modello. Lo stesso accade quando entrambi i valori sono letterali.

Pin

L'operatore pin, '^'è un operatore unario utilizzato anteponendo un nome di variabile. Assicura che alla variabile, quando utilizzata con l'operatore di corrispondenza, non venga assegnato un valore, ma che sia abbinata a quel valore. Per esempio,

a = 12  #assignment
a = 13  #assignment
^a = 13  #Pattern matching

Tubo

L'operatore pipe, '|>' funziona come l'operatore pipe nelle shell Unix. Ci consente di convogliare l'output da una funzione all'altra. Ad esempio, se è necessario reindirizzare il risultato dell'addizione inIO.puts, useremo -

(4+3) |> IO.puts

Quando si esegue il programma sopra, produce il seguente risultato:

7

Questo riconoscerà che abbiamo reindirizzato il risultato dell'addizione nella funzione IO.puts. Questo stamperà 7 sulla tua console.

Corrispondenza di stringa

L'operatore di corrispondenza della stringa, '= ~', accetta una stringa a sinistra e una stringa o un'espressione regolare a destra. Se la stringa a destra è una sottostringa di sinistra, viene restituito true. Se l'espressione regolare a destra corrisponde alla stringa a sinistra, viene restituito true. Altrimenti viene restituito false. Per esempio,

IO.puts("tutorialspoint" =~ "poi")  
IO.puts("tutorialspoint" =~ ~r/[a-z]*/)  
IO.puts("tutorialspoint" =~ ~r/[0-9]*/)

Quando si esegue il programma sopra, produce il seguente risultato:

true
true
true

Nota che le espressioni regolari iniziano con a '~r' prefisso in Elisir.

Punto codice

È un operatore unario, "?" che restituisce il punto di codice UTF-8 del carattere immediatamente alla sua destra. Può richiedere un solo carattere e accetta sequenze di escape. Per esempio,

IO.puts(?a)
IO.puts(?\s)

Quando si esegue il programma sopra, produce il seguente risultato:

97
32

Catturare

L'operatore di acquisizione "&" viene utilizzato per definire le funzioni anonime. Ne discuteremo in dettaglio nel capitolo sulle funzioni.

Ternario

Elixir non ha un operatore ternario. Possiamo ottenere la stessa funzionalità usando l'istruzione if else -

a = if true, do: "True!", else: "False!"

Nel

Questo operatore controlla se l'elemento sinistro esiste nella struttura enumerabile a destra. Ad esempio, possiamo verificare la presenza di un atomo in una lista, tupla, ecc. Di atomi usando questo operatore:

:yes in [:true, :false, :yes]

L'istruzione sopra restituisce true as :yes esiste nell'elenco.