【发布时间】:2019-09-30 17:11:30
【问题描述】:
我是 Elixir 的新手,但我找不到我的问题的答案。
以下是我输入到iex 的一些示例。
expression result
9 || true 9
true || 9 true
9 && true true
true && 9 9
因此,当有一个 || 时,它将评估为第一个参数,而 && 将在一个参数不是布尔值时持续。
|| 和 && 是如何实现的?他们为什么要返回这些结果?
【问题讨论】:
-
这在 大多数 语言中都是正确的,这些语言实现了短路布尔逻辑,而不将结果强制为狭窄约束的布尔类型。如果分支的第一侧为真,则完全原样返回,否则返回另一侧;这样,您不仅可以保留所需的真实性逻辑,还可以保留确切的值。
-
stackoverflow.com/questions/5417969/… 是一个 JavaScript 等价于问题
-
stackoverflow.com/questions/9797522/… 是一个 Python 等价于问题。
-
关键是当
X为真时,X || Y = X而不是true。
标签: elixir