【发布时间】:2009-10-23 18:11:41
【问题描述】:
传统上,大多数编程语言的 AND 优先级高于 OR 的优先级,因此表达式“a OR b AND c”被视为“a OR (b AND c)”。按照这个想法,搜索引擎和查询/寻址语言(css、xpath、sql、...)使用相同的优先级。是不是搞错了?
在处理足够大的数据时,这种优先级划分很不方便,因为如果不使用括号就无法创建可重用的查询上下文。使用 AND 创建上下文更方便,然后使用 OR 在该上下文中合并结果。用空格作为AND运算符,逗号作为OR运算符就更方便了。
示例: 在互联网上搜索 11 月或 12 月飞往巴哈马的机票时,输入“机票巴哈马 11 月、12 月”而不是“机票巴哈马 11 月”、“机票巴哈马 12 月”或“机票巴哈马 (11 月,十二月)”
在 CSS 中如果我们需要设置 2 个元素的红色样式,我们必须这样做:body.app1 div.d1 td.phone span.area, body.app1 div.d1 td.fax span.area{color: red} 本质上是重复前缀 body.app1 div.d1 和后缀 span.area
如果 OR 的优先级高于 AND,我们会在 CSS 中这样写:body.app1 div.d1 td.phone,td.fax span.area{color:red}
当然,这个想法可以发展成有 2 个运算符 OR 一个比 AND 的优先级高,一个比 AND 低,例如 ',' 更高,';'较低,但在许多情况下,语言没有多余的符号来扩展这种方式,而且使用它的“,”的现有优先级也很低。
【问题讨论】:
-
请注意,gmail 过滤器已经在使用这种反向优先级 - 优先级为 |高于空格 (AND)。
-
请注意,当您在 MS Access 中设计查询条件时,可以将 A 或 B 放在一列中,将 C 放在另一列中,MS Access 将使用(A 或 B)和 C 构建查询。
标签: language-agnostic programming-languages search-engine coding-style