问题标签 [short-circuiting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2173 浏览

functional-programming - 是否有用于评估具有短路功能的函数/表达式列表的 Python 习语?

我写了一个简单的脚本来解决“逻辑谜题”,这是一种来自学校的谜题类型,你被赋予了许多规则,然后必须能够找到解决诸如“有五个音乐家叫 A、B、C 、D、E在音乐会上演奏,一个接一个地演奏……如果A在B之前,而D不是最后……谁在什么时候演奏的顺序是什么?” 等等

为了评估可能的解决方案,我将每个“规则”编写为一个单独的函数,该函数将评估可能的解决方案(简单地表示为字符串列表)是否有效,例如

我有兴趣找到 Pythonic 的方法来测试一个可能的解决方案是否通过了所有这些规则,并且能够在第一个失败后停止评估规则。

起初我写了最简单的东西:

但这似乎相当丑陋。我想也许我可以通过列表理解之类的东西使这个阅读更加优雅......

...但后来我意识到,由于列表理解是在all()评估函数之前生成的,因此这具有根本不会短路的副作用 - 即使第一个规则返回,也会评估每个规则False

所以我的问题是:是否有一种更 Pythonic/功能性的方式能够评估True/False表达式列表,短路,而不需要写出一长串return f1(s) and f2(s) and f3(s) ...

0 投票
4 回答
209 浏览

vb.net - 短路:OrElse 与 Or 结合

如果我有以下...

...并且 a 是True那么显然 b 永远不会被评估。但是如果我添加一个Or,那又如何呢?

是否/应该对 c 进行评估?如果我放在一些括号里呢?

抱歉,如果这是基本的。当然,我可以自己测试答案,但我在这里或其他地方找不到这个问题的答案。很多关于 Or 与 OrElse 的问题,没有处理OrOrElse的问题

0 投票
2 回答
2229 浏览

scripting - 我们在 C shell 脚本中有短路逻辑运算符吗?

我认为 C shell 脚本的行为会像 C 一样,并对逻辑运算符使用短路评估。

但是在 if 语句中,即使第一个条件为真,也会检查第二个条件,这会给我带来错误。

我们在 C shell 脚本中有短路逻辑或吗?

0 投票
4 回答
5670 浏览

mysql - MySQL会短路IF()函数吗?

我需要从第二个表中查询数据,但前提是满足主表中的一组罕见条件:

a、b 和 c 条件几乎总是错误的,所以我的想法是子查询永远不会对结果集中的大多数行执行,因此比连接快得多。但这只有在 IF() 语句短路时才会成立。

可以?

感谢你们提供的任何帮助。

0 投票
4 回答
3179 浏览

tsql - 如何在非数字字段上查询“介于”数字数据?

我刚刚在数据库中发现了一个查询失败,导致报告失败。查询的基本要点:

现在,myField 并不在所有行中都包含数字数据[它是 nvarchar 类型]...但是这个查询显然被设计成它只关心这个字段中的数据是数字的行。

这样做的问题是 T-SQL(据我了解)不会短路 Where 子句,从而导致它放弃数据不是数字的记录,但以下情况除外:

Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the nvarchar value '/A' to data type int.

没有将 myField 为数字的所有行转储到临时表中,然后查询该字段在指定范围内的行,我该怎么做才是最佳的?

我的第一个解析纯粹是为了尝试分析返回的数据并查看发生了什么:

但是我遇到了与第一个查询相同的错误,我不确定我是否理解,因为此时我没有转换任何不应该是数字的数据。子查询应该只返回 myField 包含数字数据的行。

也许我需要我的早茶,但这对任何人都有意义吗?另一双眼睛会有所帮助。

提前致谢

0 投票
5 回答
220 浏览

perl - `||` 在 Perl 中是如何工作的?

||Perl的工作原理是怎样的?我想实现c风格的||操作。

0 投票
12 回答
36143 浏览

c++ - 在 C++ 中,为什么 true && true || 假 && 假 == 真?

我想知道是否有人知道编译器解释以下代码的方式:

这是真的吗,因为 && 的优先级高于 || 或者因为 || 是短路运算符(换句话说,短路运算符是否忽略所有后续表达式,或仅忽略下一个表达式)?

0 投票
3 回答
346 浏览

javascript - JavaScript 编码技术还是糟糕的代码?

在调试别人编写的 javascript 时,我遇到了一些我以前从未见过的代码。这是一个示例:

函数 doItNow() 中第二行的目的是检查 doSomething 是否存在然后调用它?像这样:

JSLint 不喜欢它,我宁愿在我的应用程序中不要有错误的代码。有什么见解吗?

0 投票
10 回答
8110 浏览

java - Java 是否会检查“&&”(和)运算符中的所有参数,即使其中一个参数为假?

我有这样的代码:

假设对象为空。

此代码是否导致 nullPointerException 或 if 语句不会被执行?

如果是这样,如何重构此代码以使其更优雅(当然,如果可能的话)?

0 投票
2 回答
926 浏览

c# - Linq IQueryable短路一个空的搜索参数

我有一个使用以下方法的通用存储库

我现在正在尝试通过前端提供搜索功能,其中一个或多个参数可能已输入或留空。我在为空参数短路表达式时遇到问题。

可以通过在存储库上调用以下示例来演示该问题:

使用ToList()throws枚举查询is 。System.NullReferenceExceptionparamnull

我既不明白这一点,也不知道如何解决它,所以任何指针表示赞赏。谢谢。

更新:为了回应下面的评论,我添加了一个空检查。我的实际代码现在看起来像这样

我仍然没有看到问题可能出在哪里。

编辑:作为对评论的回应,通用存储库GetAllByFilter代码:

请注意,如果我运行一个简单的GetAll查询

在同一张表上,不null返回任何记录(如预期的那样)。