问题标签 [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.
c# - 为什么 `bool?` 上没有解除短路运算符?
为什么不bool?
支持解除&&
和||
?他们本可以解除true
andfalse
运算符,而这会间接添加解除&&
and ||
。
运算符|
和&
已经被解除并实现了正确的三值逻辑。||
但是,它们当然不会像和那样短路&&
。
问题是为什么他们决定在创建规范时不取消这些运算符。所以“就像这样,因为规范是这样说的”并不能回答“为什么?”。
举起时,true
既不是,也不是:false
null
true
false
这将导致&&
和||
行为就像它们的非短路对应物一样。除了false && anything
andtrue || anything
会短路(false
并且true
在这两个示例中没有编译时间常数)。
这与MSDN 上的 DBBool 示例非常相似。
我没有看到解除这些操作员带来的令人惊讶或危险的行为。我错过了什么?
我已经阅读了另一个关于此的 SO 问题,但没有一个令人满意的答案。
true
Jeff Yates 的回答显示了为什么提升/运算符不是最佳的一个很好的理由false
,它没有解释为什么提升&&
和||
直接是不好的。由于运算符提升是特殊情况下的编译器魔法,Nullable<T>
因此它不需要遵循普通类型的重载规则,因此能够提供&&
/||
不提升true
。
c++ - C++如何处理&&?(短路评估)
当遇到 (bool1 && bool2) 时,如果 bool1 被发现为假,c++ 是否会尝试检查 bool2 还是会像 PHP 那样忽略它?
对不起,如果这是一个太基本的问题,但我真的在 Schildt 和互联网上都找不到提及。
c# - 为什么短路不能防止与逻辑 AND (&&) 的不可达分支相关的 MissingMethodException?
在检查我的 Windows 移动设备上是否存在并启用了摄像头时,我遇到了一些我不明白的事情。
代码如下所示:
当我调用CameraPresent2()
它时返回 false(没有相机存在)。但是当我打电话时,CameraPresent1()
我收到一个 MissingMethodException 并带有注释“找不到方法:get_CameraEnabled Microsoft.WindowsMobile.Status.SystemState”。
CameraPresent1
是否仅仅因为它们都是财产(在语言级别)而评估第二个术语?
还有什么可以解释行为差异的吗?
ruby - || 运算符,结果已知时返回?
我有一个类似于以下的功能:
我的问题是,即使第一个为真,Ruby 是否会执行所有比较,因此函数返回真。我的检查更加密集,所以我想知道我是否应该以不同的方式将其分解,以避免每次都进行所有检查。
谢谢你。
c# - 有 c# 吗?操作员短路?
在C#中使用??
运算符时,如果被测试的值不为空,是否会短路?
例子:
test3 行成功还是抛出空引用异常?
所以用另一种方式来表达这个问题:右手会表达 ?? 如果左手不为空,则对运算符进行评估?
c# - 将变量设置为特定值后立即返回。等式重载
我正在重载 Equality 方法以进行值比较,并且想知道是否有一种干净的方法可以false
在其中一个值比较返回 false 时立即返回。例如,这是基本思想:
说_valOne
' 不等于。最有效的比较方法是在false
知道两个值不相等时立即返回。类似于以下内容...
所以现在在比较_valOne
s 之后不再进行值比较。这似乎非常重复、笨拙,而且(最重要的是)可读性很差。我想知道是否有任何方法可以在不使用 && 运算符的情况下以干净的方式将这段代码简化为相同的效果。
sql - SQL Server 条件流
SELECT
如果我在一个IF EXISTS
条件中编写两个语句,AND
在这些选择查询之间有一个子句,即使第一个SELECT
返回 false,两个查询是否都会执行?
SQL Server 引擎在这种情况下是否同时执行 SQL 语句?
谢谢克里什
java - Java递归问题
这是我的一个课程中的一段代码:
本质上,我想要的是仅当下一个数组级别中的四个相应对象的标志也为真时,才将一个 SomeClass 对象的标志设置为真。不幸的是,我似乎遇到了这个问题:
看起来它只是检查第一个条件(我在计数器中添加了所以检查 someFunction 被调用了多少次,它只上升到 6,而不是我应该得到的 1365);您不能在 Java 中的 if 语句中执行多个函数调用吗?还是我做错了?
(顺便说一下格式,这是我第一次在这里发帖)
java - JSF(P) EL 的短路运算符
JSF、JSP 中使用的表达式语言是否存在短路运算符?
我的意思是 &&
,||
Java 类比,如果很明显进一步评估布尔值没有意义,则停止评估。
我观察到 , 运算符的用法and
,or
看起来它们没有短路。
php - PHP有短路评估吗?
给定以下代码:
如果is_valid($string)
返回false
,php 解释器是否仍会检查以后的条件,例如up_to_length($string)
?
如果是这样,那为什么它不需要做额外的工作呢?