标签: switch-statement

在每个'when'块中具有多个值的Case语句

我可以描述我正在寻找的最好的方法是向您展示我迄今为止尝试过的失败代码:

case car
  when ['honda', 'acura'].include?(car)
    # code
  when 'toyota' || 'lexus'
    # code
end
Run Code Online (Sandbox Code Playgroud)

我有大约4或5种不同的when情况应该由大约50种不同的可能值触发car.有没有办法用case块来做这个或者我应该尝试一个大块if

ruby syntax ruby-on-rails switch-statement

298
推荐指数
2
解决办法
11万
查看次数

为什么Java切换连续的int似乎在添加的情况下运行得更快?

我正在研究一些需要高度优化的Java代码,因为它将在我的主程序逻辑中的许多点调用的热函数中运行.此代码的一部分涉及将double变量乘以10凸起到任意非负int exponents.一个快速的方式(编辑:但不是最快的,见下面的更新2)获得相乘的值是switchexponent:

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:
         throw new ParseException("Unhandled power of ten " + power, 0);
   }
}
Run Code Online (Sandbox Code Playgroud)

上面注释的省略号表示case int常量继续递增1,因此case上面的代码片段中确实有19 秒.因为我不知道我是否真的需要10一切权力,并case声明 …

java compiler-construction performance assembly switch-statement

274
推荐指数
4
解决办法
1万
查看次数

对一个switch case语句使用两个值

在我的代码中,程序根据用户输入的文本执行某些操作.我的代码看起来像:

switch (name) {
        case text1: {
            //blah
            break;
        }
        case text2: {
            //blah
            break;
        }
        case text3: {
            //blah
            break;
        }
        case text4: {
            //blah
            break;
        }
Run Code Online (Sandbox Code Playgroud)

然而,案件里面的代码text1text4是一样的.因此,我想知道是否有可能实现类似的东西

case text1||text4: {
            //blah
            break;
        }
Run Code Online (Sandbox Code Playgroud)

我知道||运算符不会在case语句中工作,但是我可以使用类似的东西.

java switch-statement

259
推荐指数
10
解决办法
32万
查看次数

切换实例?

我有一个使用switch case for instanceofobject的问题:

例如:我的问题可以用Java重现:

if(this instanceof A)
    doA();
else if(this instanceof B)
    doB();
else if(this instanceof C)
    doC():
Run Code Online (Sandbox Code Playgroud)

如何使用switch...case

java instanceof switch-statement

249
推荐指数
14
解决办法
21万
查看次数

Java:在子类下使用带有枚举的switch语句

首先,我将说明我对C#中的枚举更加熟悉,看起来java中的枚举非常混乱.

正如您所看到的,我正在尝试在下一个示例中使用switch语句@enums,但无论我在做什么,我总是会收到错误.

我收到的错误是:

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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums switch-statement

239
推荐指数
5
解决办法
11万
查看次数

switch语句是否应该包含默认子句?

在我的第一次代码审查(前一段时间)中,我被告知在所有switch语句中包含一个default子句是一种好习惯.我最近记得这个建议,但不记得理由是什么.这对我来说听起来很奇怪.

  1. 总是包含默认声明是否有合理的理由?

  2. 这种语言是依赖的吗?我不记得当时我用的是什么语言 - 也许这适用于某些语言而不适用于其他语言?

default switch-statement

236
推荐指数
10
解决办法
20万
查看次数

'switch'比'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 += 4; break;
            case 2: counter += 3; break;
            case 3: counter += 2; break;
            case 4: counter += 1; break;
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c performance assembly switch-statement jump-table

232
推荐指数
7
解决办法
5万
查看次数

测试交换机中的多个案例,如OR(||)

switch case当你需要在同一个案例中测试a b时,你将如何使用?

switch (pageid) {
  case "listing-page" || "home-page":
    alert("hello");
    break;
  case "details-page":
    alert("goodbye");
    break;
}
Run Code Online (Sandbox Code Playgroud)

javascript switch-statement fall-through

222
推荐指数
4
解决办法
13万
查看次数

如何在PHP中使用switch case'或'?

有没有办法在php开关中使用'OR'运算符或等效运算符?例如,像这样:

switch ($value) {

    case 1 || 2:
        echo 'the value is either 1 or 2';
        break;
}
Run Code Online (Sandbox Code Playgroud)

php case switch-statement

220
推荐指数
7
解决办法
27万
查看次数

切换语句大于/小于

所以我想使用这样的开关语句:

switch (scrollLeft) {
  case (<1000):
   //do stuff
   break;
  case (>1000 && <2000):
   //do stuff
   break;
}
Run Code Online (Sandbox Code Playgroud)

现在我知道这些语句(<1000)或(>1000 && <2000)中的任何一个都不起作用(显然有不同的原因).我要问的是最有效的方法.我讨厌使用30个if语句,所以我宁愿使用switch语法.有什么我可以做的吗?

javascript comparison jquery switch-statement

212
推荐指数
4
解决办法
20万
查看次数