Elixir stellt die Werte wahr und falsch mit dem booleschen Typ dar. Es gibt nur zwei Werte: true und false. Diese Werte lassen sich mit booleschen Operatoren kombinieren (and/2, or/2, not/1):
true_variable = true and true
false_variable = true and false
true_variable = false or true
false_variable = false or false
true_variable = not false
false_variable = not true
Die Operatoren and/2, or/2 und not/1 sind strikt boolesch. Das bedeutet, dass ihr erstes Argument ein boolescher Wert sein muss. Es gibt auch äquivalente boolesche Operatoren, die mit beliebigen Argumenttypen arbeiten: &&/2, ||/2 und !/1.
Boolesche Operatoren nutzen die Kurzschlussauswertung. Das heißt, der Ausdruck auf der rechten Seite des Operators wird nur ausgewertet, wenn es nötig ist.
Jeder der Operatoren hat eine andere Priorität, wobei not/1 vor and/2 und or/2 ausgewertet wird. Mit Klammern kannst du einen Teil des Ausdrucks vor den anderen auswerten:
not true and false
# => false
not (true and false)
# => true
Wenn du eine Funktion schreibst, die einen booleschen Wert zurückgibt, ist es üblich, den Funktionsnamen mit einem ? zu beenden. Dieselbe Konvention kannst du für Variablen verwenden, die boolesche Werte speichern.
def either_true?(a?, b?) do
a? or b?
end