Elixirでは、trueとfalseという値を真偽値型で表します。値はtrueとfalseの2つだけです。これらの値は、真偽値演算子(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
and/2、or/2、not/1は厳密に真偽値用の演算子で、_最初_の引数が真偽値であることを要求します。どんな型の引数でも動く同等の真偽値演算子もあります。&&/2、||/2、!/1です。
真偽値演算子は_短絡評価_を使います。つまり、演算子の右側の式は必要なときだけ評価されます。
各演算子にはそれぞれ異なる優先順位があり、not/1はand/2やor/2より先に評価されます。括弧(())を使うと、式の一部を他の部分より先に評価できます。
not true and false
# => false
not (true and false)
# => true
真偽値を返す関数を書くときは、関数名の末尾を?にするのが慣習です。真偽値を保持する変数にも同じ慣習を使えます。
def either_true?(a?, b?) do
a? or b?
end