Elixir - 逻辑运算符
Elixir 提供 6 个逻辑运算符:and、or、not、&&、|| 和 !。 前三个 and or not 是严格的布尔运算符,这意味着它们希望第一个参数是布尔值。 非布尔参数将引发错误。 而接下来的三个,&&,|| 和 ! 是非严格的,不要求我们将第一个值严格作为布尔值。 他们的工作方式与严格的同行相同。 假设变量 A 为 true,变量 B 为 20,则 −
运算符 | 描述 | 示例 |
---|---|---|
and | 检查提供的两个值是否为 true,如果是,则返回第二个变量的值。 (逻辑与)。 | A 和 B 给 20 |
or | 检查提供的任一值是否为 true。 返回真实值。 否则返回 false。 (逻辑或)。 | A 或 B 将给出 true |
not | 一元运算符反转给定输入的值。 | not A 将给出 false |
&& | 非严格 and。 与 and 工作方式相同,但不期望第一个参数是布尔值。 | B && A 将给出 20 |
|| | 非严格的or。 与 or 工作方式相同,但不期望第一个参数是布尔值。 | B || A 将给出 true |
! | 非严格not。 与 not 相同,但不期望参数是布尔值。 | !A 将给出 false |
注意 − and, or, && 和 || 是短路运算符。 这意味着如果 and 的第一个参数为 false,则不会进一步检查第二个参数。 如果 or 的第一个参数为 true,则不会检查第二个参数。 例如,
false and raise("An error") #这不会引发错误,因为由于 and 运算符的短路性质,raise 函数不会被执行。
示例
尝试以下代码来了解 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