问题标签 [switch-statement]

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.

0 投票
11 回答
18779 浏览

c# - 在 c# 的 switch 中使用'is'关键字

我目前正在向此代码添加一些新的扩展类:

并且很好奇是否有办法is在 switch 语句中使用关键字功能?

0 投票
3 回答
2673 浏览

php - 我可以有多个案例做同样的事情吗?

第一个肯定是可行的,但下面哪一个是有效的方法?

由于 1、2 和 3 打印的效果相同,我可以这样做吗?

或者

0 投票
5 回答
3141 浏览

python - 字典或 If 语句,Jython

我现在正在编写一个脚本,它将使用 dom4j 从 HTML 中获取某些信息。

由于 Python/Jython 没有本机switch语句,我决定使用一大堆调用适当方法的if语句,如下所示:

我将根据我想从 HTML 中提取的信息添加更多内容,并考虑采用我在本网站其他地方找到的字典方法,示例如下:

我知道每次运行脚本时都会构建字典,但与此同时,如果我要使用if语句,脚本必须检查所有这些语句,直到找到正确的语句。我真正想知道的是,哪一个表现更好或通常是更好的做法?

更新: @Brian - 感谢您的精彩回复。我有一个问题,如果任何提取方法需要多个对象,例如

您将如何对handle方法进行适当的更改来实现这一点?希望你知道我的意思:)

干杯

0 投票
6 回答
6662 浏览

java - 数组作为 switch 语句的选项

我记得在大学时使用带有“二进制搜索”或“二进制开关”的开关。类似的东西,我的 google foo 今天坏了。无论如何,它是这样的:你定义了一个可能的选项数组(通常是字符串),一些神奇的事情发生了,数组中的那些选项变成了 switch 发生的情况。我记得他们必须按字母顺序才能工作。你能帮我记住魔法吗?即使是我应该看的名字也会很棒。

0 投票
31 回答
137213 浏览

c# - 有没有比这更好的选择来“打开类型”?

看到 C# 不能switch在类型上使用(我认为没有将其添加为特例,因为is关系意味着可能应用多个不同case的类型),除此之外还有更好的方法来模拟打开类型吗?

0 投票
7 回答
2861 浏览

c# - 何时使用 FOR-CASE(C# 中的 Foreach/switch)?

在我正在从事的项目中,我发现了与FOR-CASE结构类似的 C#结构:

(变量名称已更改以保护有罪者。)

您将如何实现此代码?

0 投票
8 回答
4251 浏览

language-agnostic - Switch(Case)总是错的吗?

在某些情况下 switch(case) 是一个很好的设计选择(除了简单性)而不是策略或类似模式......

0 投票
14 回答
764633 浏览

java - 为什么我不能在字符串上使用 switch 语句?

这个功能会被放入更高版本的 Java 中吗?

有人可以解释为什么我不能这样做,就像 Javaswitch声明的技术方式一样吗?

0 投票
7 回答
4983 浏览

c++ - 在 switch 语句中使用常量数组的元素作为 case

我正在尝试将一组按键映射到一组命令。因为我从多个地方处理命令,所以我想在键和命令之间设置一个抽象层,这样如果我更改底层键映射,我就不必更改太多代码。我目前的尝试如下所示:

当我尝试编译它(gcc 4.3.2)时,我收到错误消息:

错误:“LogicalMappings”不能出现在常量表达式中

我不明白为什么编译器有这个问题。我理解为什么不允许在 case 语句中包含变量,但我的印象是您可以使用常量,因为它们可以在编译时进行评估。常量数组不能与 switch 语句一起使用吗?如果是这样,我想我可以用类似的东西替换数组:

但这似乎不那么优雅。有人知道为什么你不能在这里使用常量数组吗?

编辑:我已经看到 C++ 标准中声称“一个整数常量表达式只能涉及文字(2.13)、枚举器、常量变量或整数或枚举类型的静态数据成员用常量表达式初始化(​​8.5) ……”。我仍然不明白为什么常量数组不能算作“用常量表达式初始化的枚举类型”。可能只是我的问题的答案是“因为它就是这样”,我将不得不解决它。但如果是这样的话,那就有点令人失望了,因为编译器确实可以在编译时确定这些值。

0 投票
4 回答
2555 浏览

vba - SSRS 中的惰性评估

我正在使用 SSRS 2005 生成报告,报告中的一列是简单的平均值计算。我不想除以零,所以对于我输入的文本框值:

=Switch(Fields!Count.Value=0,0,Fields!Count.Value>0,Fields!Sum.Value/Fields!Count.Value)

这仍然计算第二个表达式。

也是如此:

=IIF(Fields!Count.Value=0,0,Fields!Sum.Value/Fields!Count.Value)

我不希望我的报告显示错误。我该如何克服这个问题?