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