Questions tagged «switch-statement»

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

10
开关/模式匹配的想法
我最近一直在研究F#,虽然我不太可能很快就克服障碍,但它无疑突出了C#(或库支持)可以使生活更轻松的某些领域。 特别是,我正在考虑F#的模式匹配功能,该功能允许使用非常丰富的语法-比当前的switch / conditional C#等效项更具表现力。我不会尝试举一个直接的例子(我的F#不符合要求),但总而言之,它允许: 按类型匹配(对有区别的联合进行全覆盖检查)[请注意,这还会推断出绑定变量的类型,为成员提供访问权限等] 谓词匹配 以上(以及我可能不知道的其他一些情况)的组合 虽然C#最终会借用其中的一些功能很不错,但在此期间,我一直在研究可以在运行时完成的工作-例如,将某些对象组合在一起以允许以下操作相当容易: var getRentPrice = new Switch<Vehicle, int>() .Case<Motorcycle>(bike => 100 + bike.Cylinders * 10) // "bike" here is typed as Motorcycle .Case<Bicycle>(30) // returns a constant .Case<Car>(car => car.EngineType == EngineType.Diesel, car => 220 + car.Doors * 20) .Case<Car>(car => car.EngineType == …

5
迅速落下
迅速有能力通过陈述吗?例如,如果我执行以下操作 var testVar = "hello" var result = 0 switch(testVal) { case "one": result = 1 case "two": result = 1 default: result = 3 } 案例“一”和案例“二”是否可以执行相同的代码?

11
“ where”子句中的SQL Switch / Case
我尝试四处搜寻,但找不到任何可以帮助我的东西。 我正在尝试在SQL中执行此操作: declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE CASE @locationType WHEN 'location' THEN account_location = @locationID WHEN 'area' THEN xxx_location_area = @locationID WHEN 'division' THEN xxx_location_division = @locationID 我知道我不必在每个末尾都添加'= @locationID',但是我什至无法获得接近正确的语法。SQL一直在第一行WHEN上抱怨我的'='... 我怎样才能做到这一点?

8
小于或大于Swift switch语句
我熟悉switchSwift中的语句,但想知道如何用来替换这段代码switch: if someVar < 0 { // do something } else if someVar == 0 { // do something else } else if someVar > 0 { // etc }


17
C#switch语句限制-为什么?
编写switch语句时,在case语句中可以打开的内容似乎有两个限制。 例如(是的,我知道,如果您正在做这种事情,这可能意味着您的面向对象(OO)架构很不稳定-这只是一个虚构的示例!), Type t = typeof(int); switch (t) { case typeof(int): Console.WriteLine("int!"); break; case typeof(string): Console.WriteLine("string!"); break; default: Console.WriteLine("unknown!"); break; } 在这里,switch()语句以“期望整数类型的值”失败,而case语句以“期望常数的值”失败。 为什么要设置这些限制?其基本依据是什么?我看不出有任何理由switch语句具有屈服于只有静态的分析,以及为什么值在接通必须是完整的(即原语)。理由是什么?


8
切换case语句错误:case表达式必须为常量表达式
我的转换案例声明昨天运行良好。但是,当我今天早些时候运行代码时,eclipse给了我一个错误,强调了红色的case语句,并说:case表达式必须是常量表达式,它是常量,我不知道发生了什么。这是我的代码如下: public void onClick(View src) { switch(src.getId()) { case R.id.playbtn: checkwificonnection(); break; case R.id.stopbtn: Log.d(TAG, "onClick: stopping srvice"); Playbutton.setImageResource(R.drawable.playbtn1); Playbutton.setVisibility(0); //visible Stopbutton.setVisibility(4); //invisible stopService(new Intent(RakistaRadio.this,myservice.class)); clearstatusbar(); timer.cancel(); Title.setText(" "); Artist.setText(" "); break; case R.id.btnmenu: openOptionsMenu(); break; } } 所有R.id.int都用红色下划线。

9
为什么String switch语句不支持null大小写?
我只是想知道为什么Java 7 switch语句不支持null大小写而是抛出NullPointerException?请参阅下面的注释行(示例摘自上的Java教程文章switch): { String month = null; switch (month) { case "january": monthNumber = 1; break; case "february": monthNumber = 2; break; case "march": monthNumber = 3; break; //case null: default: monthNumber = 0; break; } return monthNumber; } 这样可以避免if在每次switch使用之前都进行空检查的条件。


3
是否使用if(0)跳过应该起作用的开关中的情况?
我有一种情况,我希望C ++ switch语句中的两种情况都落入第三种情况。具体而言,第二种情况将落入第三种情况,并且第一种情况也将落入第三种情况而不会通过第二种情况。 我有一个愚蠢的想法,尝试了一下,就成功了!我把第二个盒子包裹在一个if (0) {...中}。看起来像这样: #ifdef __cplusplus # include <cstdio> #else # include <stdio.h> #endif int main(void) { for (int i = 0; i < 3; i++) { printf("%d: ", i); switch (i) { case 0: putchar('a'); // @fallthrough@ if (0) { // fall past all of case 1 …

12
Switch语句掉线…应该允许吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 只要我记得我就避免使用switch语句掉线。实际上,我不记得它曾经作为一种可能的方式进入我的意识,因为它早在我的脑海中就被深深钻研了,它只不过是switch语句中的一个错误。但是,今天我遇到了一些设计上使用它的代码,这让我立即想知道社区中的每个人对switch语句失败的看法。 是某种编程语言应该明确不允许的(就像C#一样,尽管它提供了一种解决方法),或者它是任何一种功能强大的语言的功能,都足以让程序员掌握? 编辑: 我对落空的含义还不够具体。我经常使用这种类型: switch(m_loadAnimSubCt){ case 0: case 1: // Do something break; case 2: case 3: case 4: // Do something break; } 但是,我担心这样的事情。 switch(m_loadAnimSubCt){ case 0: case 1: // Do something, but fall through to the other cases // after doing it. case 2: case 3: …

13
Java switch语句多种情况
只是想弄清楚如何对Java switch语句使用多种情况。这是我要执行的操作的一个示例: switch (variable) { case 5..100: doSomething(); break; } 与必须要做的事情: switch (variable) { case 5: case 6: etc. case 100: doSomething(); break; } 有什么想法,如果可能的话,或者什么是好的选择?

5
为什么切换比不快
许多Java书籍都将该switch语句描述为比该if else语句快。但我没有找到任何地方为什么切换比if更快。 例 我有一种情况,我必须选择两项中的任何一项。我可以使用任何一种 switch (item) { case BREAD: //eat Bread break; default: //leave the restaurant } 要么 if (item == BREAD) { //eat Bread } else { //leave the restaurant } 考虑item和BREAD是一个恒定的int值。 在上面的示例中,哪个操作更快,为什么?

19
如何从交换机内部跳出循环?
我正在写一些看起来像这样的代码: while(true) { switch(msg->state) { case MSGTYPE: // ... break; // ... more stuff ... case DONE: break; // **HERE, I want to break out of the loop itself** } } 有没有直接的方法可以做到这一点? 我知道我可以使用一个标志,并通过在开关之后放置条件中断来中断循环。我只想知道C ++是否已经为此做了一些构造。

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.