Elixir - Operadores lógicos

Elixir proporciona 6 operadores lógicos: y, o, no, &&, || y!. Los primeros tres,and or notson operadores booleanos estrictos, lo que significa que esperan que su primer argumento sea un booleano. El argumento no booleano generará un error. Mientras que los siguientes tres,&&, || and !son no estrictos, no requieren que tengamos el primer valor estrictamente como booleano. Funcionan de la misma manera que sus contrapartes estrictas. Asumir variableA se mantiene verdadero y variable B tiene 20, entonces -

Operador Descripción Ejemplo
y Comprueba si ambos valores proporcionados son verdaderos, si es así, devuelve el valor de la segunda variable. (Lógico y). A y B darán 20
o Comprueba si alguno de los valores proporcionados es verdadero. Devuelve el valor que sea verdadero. Else devuelve falso. (Lógico o). A o B darán verdadero
no Operador unario que invierte el valor de la entrada dada. no A dará falso
&& No estricto and. Funciona igual queand pero no espera que el primer argumento sea booleano. B && A dará 20
|| No estricto or. Funciona igual queor pero no espera que el primer argumento sea booleano. B || Un daré verdad
! No estricto not. Funciona igual quenot pero no espera que el argumento sea booleano. ! A dará falso

NOTE − y , o , && y || son operadores de cortocircuito. Esto significa que si el primer argumento deandes falso, entonces no comprobará más el segundo. Y si el primer argumento deores verdadero, entonces no buscará el segundo. Por ejemplo,

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.

Ejemplo

Pruebe el siguiente código para comprender todos los operadores aritméticos en 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))

El programa anterior genera el siguiente resultado:

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