|
6
|
| laconis · 技术社区 · 8 年前 |
|
|
1
4
为您的问题找到XQuery规范的相关部分做得很好!这是成功的一半。Switch表达式确实与条件表达式有一些共同之处,但也有一些区别。 关键区别在于条件表达式 计算测试表达式 查看结果是真是假,而开关表达式 将一个表达式与一个或多个其他表达式进行比较 找到第一对相等的。通过使用伪代码,我们可以说明这种差异。条件表达式中的所有逻辑在此发生在一行:
相反,switch表达式的逻辑分布在许多行上:
switch表达式实际上正在执行一系列比较,我们可以将其表示为更多行条件表达式:
规范中描述了这两个表达式之间的本质区别,从它们描述处理每个表达式的“第一步”开始。而处理条件表达式的第一步是:
... 处理开关表达式的第一步是:
让我们回到具体示例,看看条件的测试表达式和开关的开关操作数表达式:
条件的测试表达式返回布尔值-
相反,switch表达式的逻辑才刚刚从这个操作数表达式开始。首先,它查找操作数表达式的原子化值
我们还记得,这个表达式的计算结果是布尔值。开关表达式执行的下一步是使用
在这两种情况下,比较都会返回
模拟原始条件表达式结果的开关表达式如下所示:
这将执行以下检查:
并返回与条件表达式相同的结果。 这并不是switch表达式的一个特别引人注目的用途,因为我们正在有效地评估单个测试表达式。当您有许多值要比较时,switch表达式真的很有用。规范为我们提供了一个很好的开关表达式示例:
这比等效的条件表达式更具可读性和紧凑性:
或者更直接的解释:
结果是:如果你发现自己在写一系列条件句,而比较的左边总是一样的,那么考虑一下 进行切换 . |
|
|
Bunyamin Erkaya · 使用开关输入后立即断开,或者如果 2 年前 |
|
|
Ettapp · switch语句中的类型保护类 2 年前 |
|
|
user23760512 · 所欠所得税的计算不正确 2 年前 |
|
|
Johnml · 将if-else语句转换为Switch语句 2 年前 |
|
Piotr Siupa · 如何在switch语句中使用太空船操作员 2 年前 |
|
|
Sybe · 将输入转换为数字的方法不起作用[重复] 2 年前 |