Java Switch Statement - Is "or"/"and" possible?
上面有很多答案,为在我的示例中使用此错误语法提供了很好的选择,但我还没有阅读说明为什么它不起作用:
const switchExample = (val) => {
switch(val) {
case 'a' || 'b' || 'c':
return 'first 3'
break;
case 'd':
return 'fourth'
break;
default:
return 'default'
}
}
使用'b'或'c'作为参数将返回默认值。而“ a”将(如预期的那样)返回“前3个”。我期望如果'b'是真实的,那么第一种情况将评估为true并返回'前3个,但是情况并非如此。有人可以解释为什么吗?
实际上-我认为答案可能是这样的:如果提供了'a',则switch语句从列出的案例定义中将其识别为有效案例。但是,如果提供了'b'或'c',则结果将为'true',这将返回默认值,因为switch语句不查找真实值以及您使用'||'的时间。它变成一个。是吗?
这里
const
switchExample = (val) => {
switch(val) {
case 'a':
case 'b':
case 'c':
return 'first 3'; // no break required, because return ends the function
case 'd':
return 'fourth';
default:
return 'default';
}
}
首先计算表达式 switch(val) {
case 'a' || 'b' || 'c':
的值(它是'a' || 'b' || 'c'
),然后'a'
将检查switch
是否适合val
。
您需要以这种方式进行替代:
case