Elixir - 逻辑运算符


Elixir 提供 6 个逻辑运算符:and、or、not、&&、|| 和 !。前三个and or not是严格的布尔运算符,这意味着它们希望第一个参数是布尔值。非布尔参数将引发错误。接下来的三个,&&,|| 和 !不严格,不要求我们将第一个值严格作为布尔值。他们的工作方式与严格的同行相同。假设变量A为真且变量B为 20,则 -

操作员 描述 例子
检查提供的两个值是否为真,如果是,则返回第二个变量的值。(逻辑与)。 A和B各给20
或者 检查提供的任一值是否为真。返回真实值。否则返回 false。(逻辑或)。 A 或 B 将给出 true
不是 一元运算符反转给定输入的值。 不 A 会给出 false
&& 非严格的. 与and工作相同,但不期望第一个参数是布尔值。 B&&A 会给 20
|| 非严格. 与or作用相同,但不期望第一个参数是布尔值。 乙|| A将给出真实的
非严格工作方式与not相同,但不期望参数是布尔值。 !A 会给出 false

注意 -&&|| 是短路操作员。这意味着如果and的第一个参数为 false,则它将不会进一步检查第二个参数。如果or的第一个参数为 true,则它不会检查第二个参数。例如,

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.

例子

尝试以下代码来了解 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))

上述程序生成以下结果 -

a and b 20
a or b true
not a false
b && a true
b || a 20
!a false
elixir_operators.htm