问题标签 [logical-operators]
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.
sql - 带有正则表达式的 SQL 与带有逻辑合并函数的索引
我正在尝试开发一个复杂的文本搜索引擎。我有来自许多书籍的数千页文字。我需要搜索包含指定复杂逻辑标准的页面。这些标准几乎可以包含以下任何组合:
- 答:完整的话。
B:词根(类似于词干;即所有具有某些关键字母的词)。
C:单词模板(在某些语言中,词根填充在某些模板中以形成各种词性,例如形容词,过去/现在动词......)。
D:逻辑连接词:AND/OR/XOR/NOT/IF/IFF 和括号来表示优先级。
现在,将页面的全文保存在数据库中(未编入索引)并使用 SQL 和正则表达式搜索它们会更快吗?
或者构建 word/root/template-page-location 元组的索引会更好吗?因此,我们可以加强对单个单词/词根/模板的搜索。然而,当我们在查询中引入逻辑连接词时,它变得很棘手。我想在这种情况下执行以下步骤:
1:单独搜索指定查询中的每个单词/词根/模板。
2:基于优先级,我们根据逻辑连接词一次合并两个结果列表(来自步骤 1)
例如,如果我们搜索“he AND (is OR was)”:
1:我们将分别搜索“he”、“is”和“was”,得到每个单词的结果列表。
2:使用合并函数OR-MERGE合并“is”和“was”的结果列表。
3:使用合并函数AND-MERGE将来自OR-MERGE函数的合并结果列表与“he”之一合并。
然后将步骤 3 的结果作为指定查询的结果返回。
你怎么看大师?哪个更快?有更好的主意吗?
谢谢大家。
python - python中return语句中的逻辑运算符评估
这是如何执行的?
x
是一个数组,例如:[1, 1, 1, 3]
javascript - 何时在 JavaScript 中使用 === 运算符检查?
javascript - 在javascript中链接逻辑运算符的简写?
有没有更好的方法在javascript中编写以下条件?
我讨厌将所有这些逻辑 OR 串在一起。我想知道是否有某种速记。
谢谢!
c# - C# 中的逻辑和条件 AND、OR 有什么区别?
可能重复:
| 之间有什么区别?和 || 还是运营商?
逻辑 AND 和 OR:
条件 AND 和 OR:
到目前为止,我只知道条件操作数。我知道它的作用以及如何在 if 语句中应用它。但是逻辑操作数的目的是什么?
javascript - 赋值中的 Javascript AND 运算符
我知道在 JavaScript 中你可以这样做:
oneOrTheOther
如果变量不是 、 或 ,则变量将采用第一个null
表达式undefined
的值false
。在这种情况下,它被分配给第二条语句的值。
但是,oneOrTheOther
当我们使用逻辑 AND 运算符时,变量会分配给什么?
someOtherVar
非假时会发生什么?假的
时候会发生什么?someOtherVar
刚刚学习 JavaScript,我很好奇与 AND 运算符一起赋值会发生什么。
conditional - 我可以简化这个使用逻辑否定运算符的条件语句吗?
抱歉,如果这是“逻辑运算符 101”之类的问题。我一直盯着我的屏幕 15 分钟试图绕着它转头,但我被卡住了。
是否有更简洁/优雅的方式来表达以下内容(这是 JavaScript 语法,但它不是与语言相关的问题):
根据一些实验,这似乎不是逻辑上的等价物:
此外,任何人都可以推荐在线资源以进一步研究此类问题吗?我假设这种类型的东西在计算机科学课程的抽象层面上有所涵盖,这是我真正想填补的编程知识中的一个重要空白。谢谢!
c - 为什么C没有逻辑赋值运算符?
我需要编写表格的声明
whereexpr
应该被评估并且没有设置分配给a
iff的结果a
。这依赖于逻辑 OR 的短路功能。
当然,写上面的更短的方法是
但是(令我惊讶的是)C 没有逻辑赋值运算符。
所以我的问题是双重的。首先,是否有更短的方法可以用标准 C 编写第一条语句(三元运算符更糟——a = a ? a : expr
需要我拼出a
三次)。
其次,为什么 C 语言中没有逻辑赋值?我能想到的可能原因是:
- 它使语法更难解析?
- 这些情况下处理短路有一些微妙之处吗?
- 它被认为是多余的(但这不是反对所有运算符分配的论点吗?)
编辑
请解开这个问题,因为:
它所链接的问题(作为所谓的副本)尚未得到答复。该问题的(已接受)答案指出
||=
不存在,因为重复了|=
. 那是错误的答案。|=
不会短路。C 和 C++ 不是同一种语言。我想知道为什么 C 没有它。事实上,派生语言如 C++,尤其是 Java(没有像 Edmund 的回答中所建议的那样受到遗留代码问题的困扰)这一事实使这个问题变得更加有趣。
编辑 2
现在看来我的初衷是错误的。在语句中a = a || expr
(其中a
是整数并expr
返回一个整数值,首先两者a
和expr
都将被隐式转换为“布尔值”,然后“布尔”值将被分配给a
。这将是不正确的 - 整数值将丢失。谢谢,延斯和埃德蒙。
因此,对于问题的第一部分,正确的方法,而不是替代方案:),编码我的意图是:
或者
它们应该被优化相同(我认为),但我个人更喜欢第一个(因为它少了一个a
要输入的内容)。
但是,问题的第二部分仍然存在。Jens 和 Edmund 关于a ||= expr
在a = a || expr
. 分配案例可以简单地视为正常案例:
- 转换
a
为布尔值 - 如果为真,则整个表达式的值变为等于布尔值
a
- 否则评估
expr
,将结果转换为布尔值,分配给a
,并返回它
对于分配和正常情况,上述步骤似乎是相同的。
c - 逻辑 NOT (!) 运算符不适用于按位语句
我正在尝试确定是否可以计算两个 32 位整数之和而不会溢出,同时仅使用某些按位运算符和其他运算符。因此,如果整数 x 和 y 可以相加而不会溢出,则以下代码应返回 1,否则返回 0。
但是,它应该为 1 时返回 0,反之亦然。当我使用逻辑 NOT (!) 运算符或使用 0x1 的按位 XOR (^) 时,它不能解决问题。
^ 这些不起作用。
提前致谢。