or, and
根据basic Operators
:
:
|| , &&
or
要回答您的问题,第二组运营商的意义是什么?我认为该教程非常好。
作为经验法则,当您期待时使用and
,and
和
or
布尔人。如果任何参数是非树状的,请使用not
,
&&
和
||
。我的take 对我来说,这似乎是语言本身中最伟大的练习。在与llet失败的哲学上,更严格的类型可能是一个好主意。在比较情况下。提出这样的错误可能比错误地评估某些东西更好。
!
和&&
示例
and
守卫是严格的布尔人,因此您必须在其中使用“和”或“”。
直接来自何塞·瓦利姆(Jose Valim)。Also Peter Hamilton (credit where credit's due) pointed out this enlightening message from Robert Virding, one of the creators of Erlang:
A little bit of history and some philosophy about boolean operators and guards.
测试
,并被认为是 将图案与无法很好的事物匹配的扩展 写为模式。测试成功或失败。 imao这个 使警卫更加一致地WRT内容和处理 故障/异常,这只是一个失败的测试。允许的时候 警卫变得复杂,他们徘徊成为后卫的表情 which return boolean values and then the guard as a whole became a 布尔表达。我认为这使解释更加困难 为什么守卫看起来和表现得像他们一样。我将这个答案标记为社区Wiki,因为这并不是我的回答本身。期望对还是错误,作为他们的第一个参数对我来说,希望拥有布尔值作为第一个参数时,当您不想将任何其他值(或数据类型)解释为true时,这是有帮助的,因为Elixir除了NIL和False以外,Elixir都会将任何东西付诸实践。用户可能要确保该参数是布尔值(是true或false),并且除了任何其他类型的值外,不要意外。
博物运算符,例如
not- or
,- and
,
Relaxed布尔运算符,例如
||,
&&,!
可以接受任何类型的参数。除零或错误以外的任何其他价值都被解释为真实(真相)。例如,例如
iex(1)> nil && 13 nil iex(2)> true && 17 17 iex(3)> true and true true iex(4)> false and true false iex(5)> 73 and false ** (ArgumentError) argument error: 73
如果你尝试
x || y # gives x if x is truthy else y x && y # gives y if x is truthy else x !x # false if x is truthy , otherwise true