首页 > 解决方案 > 为什么是数字|| 布尔数字?

问题描述

我是 Elixir 的新手,但我找不到我的问题的答案。以下是我输入的一些示例iex

expression   result
9 || true    9
true || 9    true
9 && true    true
true && 9    9

因此,当有一个参数时||,它将评估为第一个参数,并&&在一个参数不是布尔值时持续。是如何实施||&&?他们为什么要返回这些结果?

标签: elixir

解决方案


这是短路布尔逻辑上下文中的通用语言工具。抛出一些有用的示例案例的伪代码:

need_a_number() && calculate_number() # do the expensive calculate_number() call, and evaluate to
                                      # its result, only if need_a_number() is truthy.

get_a_string() || "default string"  # returns "default_string" if get_a_string() is falsey

如果您的&&and||仅返回布尔值,则您将无法在单个操作中同时进行分支和计算。


推荐阅读