如何在Ruby中编写switch语句?
我想在Python中编写一个函数,它根据输入索引的值返回不同的固定值.
在其他语言中,我会使用switch
或case
声明,但Python似乎没有switch
声明.在这种情况下,推荐的Python解决方案是什么?
这个功能是否会被放入以后的Java版本中?
有人可以解释为什么我不能这样做,就像Java的switch
声明的技术方式一样吗?
我一直想知道这一点 - 为什么你不能在switch语句中的case标签之后声明变量?在C++中,您可以在任何地方声明变量(并且声明它们接近第一次使用显然是一件好事)但是以下仍然不起作用:
switch (val)
{
case VAL:
// This won't work
int newVal = 42;
break;
case ANOTHER_VAL:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
以上给出了以下错误(MSC):
'case'标签跳过'newVal'的初始化
这似乎也是其他语言的限制.为什么会出现这样的问题?
我在JavaScript中的switch语句中需要多个case,比如:
switch (varName)
{
case "afshin", "saeed", "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?如果在JavaScript中没有办法做类似的事情,我想知道一个也遵循DRY概念的替代解决方案.
有没有办法在不case value:
反复陈述的情况下通过多个案例陈述?
我知道这有效:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是我想做这样的事情:
switch (value)
{
case 1,2,3:
//Do Something
break;
case 4,5,6:
//Do Something
break;
default:
//Do the Default
break;
}
Run Code Online (Sandbox Code Playgroud)
这是我用不同的语言思考的语法,还是我错过了什么?
我想知道,是否有一个Python等效的case语句,如VB.net或C#上提供的示例?
切换声明是我喜爱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", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen" };
string ans = "";
switch (number.ToString().Length)
{
case 3:
ans += string.Format("{0} hundred and ", numbers[number / 100]); …
Run Code Online (Sandbox Code Playgroud) 我是前Pascal人,目前正在学习C#.我的问题如下:
下面的代码比开关更快吗?
int a = 5;
if (a == 1)
{
....
}
else if(a == 2)
{
....
}
else if(a == 3)
{
....
}
else if(a == 4)
{
....
}
else
....
Run Code Online (Sandbox Code Playgroud)
和开关:
int a = 5;
switch(a)
{
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
case 4:
...
break;
default:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
哪一个更快?
我问,因为我的程序有类似的结构(许多很多"其他如果"语句).我应该把它们变成开关吗?
看作C#无法打开一个Type(我收集的并不是作为特殊情况添加的,因为is-a关系意味着可能有多个不同的情况可能适用),是否有更好的方法来模拟切换类型?
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());
}
}
Run Code Online (Sandbox Code Playgroud) switch-statement ×10
c# ×4
python ×2
c++ ×1
if-statement ×1
java ×1
javascript ×1
performance ×1
ruby ×1
string ×1
system.type ×1