Questions tagged «switch-statement»

在计算机编程中,switch,case,select或inspect语句是一种选择控制机制,用于根据变量内容调用特定的代码块。


30
在Python中替换switch语句?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 我想用Python编写一个函数,该函数根据输入索引的值返回不同的固定值。 在其他语言中,我将使用switchor case语句,但Python似乎没有switch语句。在这种情况下,推荐的Python解决方案是什么?


23
为什么不能在switch语句中声明变量?
我一直想知道-为什么您不能在switch语句中的case标签之后声明变量?在C ++中,您几乎可以在任何地方声明变量(并且声明它们接近首次使用显然是一件好事),但是以下操作仍然无效: switch (val) { case VAL: // This won't work int newVal = 42; break; case ANOTHER_VAL: ... break; } 上面给了我以下错误(MSC): “ newVal”的初始化被“ case”标签跳过 这似乎也是其他语言的限制。为什么会有这样的问题?

21
在JavaScript中切换语句多个案例
我需要在JavaScript的switch语句中使用多种情况,例如: switch (varName) { case "afshin", "saeed", "larry": alert('Hey'); break; default: alert('Default case'); break; } 我怎样才能做到这一点?如果没有办法在JavaScript中执行类似的操作,我想知道一个也遵循DRY概念的替代解决方案。

18
switch语句中有多种情况
有没有办法case value:反复声明多个case语句? 我知道这可行: switch (value) { case 1: case 2: case 3: // Do some stuff break; case 4: case 5: case 6: // Do some different stuff break; default: // Default stuff break; } 但我想做这样的事情: switch (value) { case 1,2,3: // Do something break; case 4,5,6: // Do something …

14
C#中的switch语句失败?
switch语句的下通是为爱我个人的一个重要原因switch与if/else if结构。这里有一个示例: static string NumberToWords(int number) { string[] numbers = new string[] { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; string[] tens = new string[] { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; string[] teens = new string[] { "ten", "eleven", "twelve", …

30
有没有比“打开类型”更好的选择了?
看到C#不能switch在类型上(我收集的这种数据没有作为特殊情况添加,因为is关系意味着case可能应用多个不同的对象),是否有更好的方法来模拟其他类型的切换? void Foo(object o) { if (o is A) { ((A)o).Hop(); } else if (o is B) { ((B)o).Skip(); } else { throw new ArgumentException("Unexpected type: " + o.GetType()); } }

3
在每个“ when”块中具有多个值的case语句
我能描述我所寻找的最好方法是向您展示到目前为止我尝试过的失败代码: case car when ['honda', 'acura'].include?(car) # code when 'toyota' || 'lexus' # code end 我有大约4或5种不同的when情况,应该由的大约50种不同的可能值触发car。有没有办法用case积木做到这一点,还是应该尝试大量if积木?

11
对一个switch case语句使用两个值
在我的代码中,该程序根据用户输入的文本执行某些操作。我的代码如下: switch (name) { case text1: { //blah break; } case text2: { //blah break; } case text3: { //blah break; } case text4: { //blah break; } 但是,案例text1和内部的代码text4是相同的。因此,我想知道我是否有可能实施类似 case text1||text4: { //blah break; } 我知道||运算符在case语句中不起作用,但是有什么我可以使用的东西。

4
为什么在添加了大小写的情况下,Java开启连续int似乎运行得更快?
我正在研究一些Java代码,这些代码需要高度优化,因为它将在热门函数中运行,这些热点函数在我的主程序逻辑中的许多地方被调用。该代码的一部分涉及将double变量乘以10任意非负数int exponents。获得乘数的一种快速方法(编辑:但不是最快的方法,请参见下面的Update 2)是在switch上exponent: double multiplyByPowerOfTen(final double d, final int exponent) { switch (exponent) { case 0: return d; case 1: return d*10; case 2: return d*100; // ... same pattern case 9: return d*1000000000; case 10: return d*10000000000L; // ... same pattern with long literals case 18: return d*1000000000000000000L; default: …


6
Java:在子类下使用带有enum的switch语句
首先,我要说的是,我对C#中的枚举更加熟悉,而Java中的枚举似乎相当混乱。 如您所见,我在下一个示例中尝试使用switch语句@枚举,但是无论我在做什么,我总是会收到错误消息。 我收到的错误是: 合格的案例标签SomeClass.AnotherClass.MyEnum.VALUE_A必须替换为不合格的枚举常量VALUE_A 事情是我很理解错误,但是我不能只写VALUE_A,因为枚举位于另一个子类中。有办法解决这个问题吗?以及为什么它在Java中发生? //Main Class public class SomeClass { //Sub-Class public static class AnotherClass { public enum MyEnum { VALUE_A, VALUE_B } public MyEnum myEnum; } public void someMethod() { MyEnum enumExample //... switch (enumExample) { case AnotherClass.MyEnum.VALUE_A: { <-- error on this line //.. break; } } …

21
switch语句应始终包含默认子句吗?
在我的第一批代码审阅中(有一段时间),我被告知,在所有switch语句中包括default子句是一种很好的做法。我最近记得这个建议,但不记得有什么道理。现在对我来说听起来很奇怪。 是否有一个总是包含默认语句的合理原因? 这种语言依赖吗?我不记得当时使用的是哪种语言-也许这适用于某些语言,而不适用于其他语言?

12
“切换”比“ if”快吗?
是一种switch说法实际上比更快的if声明? 我在带有/Ox标记的Visual Studio 2010的x64 C ++编译器上运行了以下代码: #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX_COUNT (1 << 29) size_t counter = 0; size_t testSwitch() { clock_t start = clock(); size_t i; for (i = 0; i < MAX_COUNT; i++) { switch (counter % 4 + 1) { case 1: counter += …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.