Elixir - 逻辑运算符



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

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

注意 - andor&&|| 是短路运算符。这意味着如果and的第一个参数为假,则它不会进一步检查第二个参数。如果or的第一个参数为真,则它不会检查第二个参数。例如:

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
广告