Elisir - Operatori logici

Elixir fornisce 6 operatori logici: and, or, not, &&, || e !. I primi tre,and or notsono operatori booleani rigorosi, il che significa che si aspettano che il loro primo argomento sia un booleano. L'argomento non booleano genererà un errore. Mentre i prossimi tre,&&, || and !non sono rigorosi, non richiedono di avere il primo valore rigorosamente come booleano. Funzionano allo stesso modo delle loro controparti rigorose. Assumi variabileA è vero e variabile B detiene 20, quindi -

Operatore Descrizione Esempio
e Verifica se entrambi i valori forniti sono veritieri, in caso affermativo restituisce il valore della seconda variabile. (Logico e). A e B daranno 20
o Verifica se uno dei valori forniti è veritiero. Restituisce il valore vero. Altrimenti restituisce false. (Logico o). A o B daranno vero
non Operatore unario che inverte il valore di un dato input. non A darà falso
&& Non rigoroso and. Funziona comeand ma non si aspetta che il primo argomento sia un booleano. B && A darà 20
|| Non rigoroso or. Funziona comeor ma non si aspetta che il primo argomento sia un booleano. B || A dare vero
! Non rigoroso not. Funziona comenot ma non si aspetta che l'argomento sia un booleano. ! A darà falso

NOTE − e , o , && e || sono operatori di cortocircuito. Ciò significa che se il primo argomento diandè falso, quindi non controllerà ulteriormente il secondo. E se il primo argomento diorè vero, quindi non controllerà il secondo. Per esempio,

false and raise("An error")  
#This won't raise an error as raise function wont get executed because of short
#circuiting nature of and operator.

Esempio

Prova il codice seguente per comprendere tutti gli operatori aritmetici in Elixir.

a = true
b = 20

IO.puts("a and b " <> to_string(a and b))

IO.puts("a or b " <> to_string(a or b))

IO.puts("not a " <> to_string(not a))

IO.puts("b && a" <> to_string(b && a))

IO.puts("b || a " <> to_string(b || a))

IO.puts("!a " <> to_string(!a))

Il programma di cui sopra genera il seguente risultato:

a and b 20
a or b true
not a false
b && a true
b || a 20
!a false