草庐IT

Switch-case

全部标签

php - 默认作为 switch 语句中的第一个选项?

我已经对此进行了测试并且它工作正常,但它看起来...很奇怪...对我来说。我是否应该担心这是一种非标准形式,将在未来的PHP版本中删除,或者它可能会停止工作?我总是将默认情况作为最终情况,而不是第一种情况......switch($kind){default://Thekindwasn'tvalid,setittothedefault$kind='kind1';//andfallthrough:case'kind1'://Dosomestuffforkind1herebreak;case'kind2'://dosomestuffforkind2herebreak;//[...]case

带比较的 ruby​​ case 语句

这个问题在这里已经有了答案:Rubyrange:operatorsincasestatement(4个答案)关闭8年前。有没有办法在ruby​​中使用带有整数比较的case语句?我发现了很多比较字符串的示例,但下面的case示例因语法错误而失败。defget_price_rank(price)casepricewhen=90return'Rich!'endend

windows - Windows 上的 Git : "merging" 2 directories with the same name but different case

“merge”一词并不是指gitmerge,而是将所有文件移动到同一目录。不知何故,我们的git存储库中出现了两个名称相同但大小写不同的目录。Windows在这方面不区分大小写,因此只需将两个目录中的所有文件checkout到磁盘上的一个目录中即可正常工作。还是想摆脱这种“二元性”有没有办法使用Windowsgit客户端解决此问题?我试过gitmv,但它似乎不区分大小写。我希望它只移动目录的小写版本下的文件,但它移动了两个目录。 最佳答案 这对我有用:gitmvmyfoldertmp_foldergitmvtmp_folderMyF

java - 为什么在一个 case block 中定义的变量在其他 case block 中可用?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyarevariablesnotlocalincasestatements?作用域block中定义的变量不能在其外部使用。例如,下面的代码片段是无效的:{intanothervar=4;}{System.out.println(anothervar);}但看起来caseblock不会创建单独的作用域。switch(mode){caseONE:dosomething();return;caseTWO:int[]someints=newint[]{2,3,5,7};SomeObjectobj=newSomeO

c++ - 为什么可以用多态来代替switch或else-if语句?

我对帖子中的内容感到有些困惑:case-vs-if-else-if-which-is-more-efficient有人多次建议应该使用多态来代替长的case/if-else语句。我正在努力弄清楚这到底意味着什么。你如何替换:caseTASK_A://dothingsfortaskAbreak;caseTASK_B://dothingsfortaskBbreak;::caseTASK_J://dothingsfortaskJbreak;多态性?如果“做......”部分基本上是相同的重复,我可以理解它,但如果部分或所有“案例”之间存在显着差异,那么这是否仍然适用?

c++ - 如果有 if-constexpr,为什么没有 switch-constexpr?

在C++17中,ifconstexpr被介绍;然而,似乎没有switchconstexpr(参见here)。这是为什么?也就是说,如果编译器支持ifconstexpr,那么支持switchconstexpr(最坏情况下作为if-then-else-if-etc。链,或多个if带有一些标志来控制fallthrough)? 最佳答案 ifconstexpr最终源自moresaneform的staticifconcept.由于这种推导,标准委员会似乎没有考虑将相同的想法应用于switch。所以这可能是主要原因:没有人将它添加到论文中,因为

c++ - switch case 是循环还是条件结构?

我在一次采访中被问到这个问题。我回答说这是一个条件结构,因为它只执行一次,不像循环可以执行多次。没有循环控制机制,只有根据不同情况进行条件切换。那么我的回答是对还是错,还有更好的答案吗?他还问我为什么break;语句适用于switch-case,因为break;只适用于循环。这个问题我没法回答。 最佳答案 在C++中switch是selection-statementn33766.4/1和6.4.2是关于switchselection-statement:...switch(condition)statementbreak是跳转语句

c++ - 在 switch case 语句中,它表示 "duplicate case value"作为错误出现。有人知道为什么吗?

我正在编写剪刀石头布程序,但这次计算机有一半的时间选择石头,三分之一的时间选择剪刀,只有六分之一的时间选择布。我这样做的方法是列举了六个可能的计算机选择值:enumchoicec{rock1,rock2,rock3,scissors1,scissors2,paper};choiceccomputer;但是,在计算机做出选择之后,我必须将这些枚举值转换为石头、布或剪刀。我使用switch-case语句完成了此操作:switch(computer){caserock1||rock2||rock3:c=1;break;casescissors1||scissors2://ERROR!c=3;

c++ - 为什么我不能在 switch/case 中使用 unsigned short?

我在ClsA中有两个静态成员声明,​​如下所示:classClsA{public:staticunsignedshortm_var1;staticunsignedshortm_var2;};unsignedshortClsA::m_var1=1001;unsignedshortClsA::m_var2=1002;在ClsB中,我像这样使用来自ClsA的静态成员声明:unsignedshortvar1;//assumevar1isdeclare/usesomewhereinthecode.switch(var1){caseClsA::m_var1://Error:cannotappear

c++ - C++中的switch语句

考虑:#includeusingnamespacestd;intmain(){intscore;chargrade;cout>score;if(score>=90)grade='a';if(score>=80)grade='b';if(score>=70)grade='c';if(score>=60)grade='d';elsegrade='f';cout为什么当我输入95时却给出默认的switchcase,而我应该得到case'a'? 最佳答案 您遗漏了一堆else,或者以错误的顺序进行比较。95大于90,但也大于80、70和60