可能重复:
"else if"比"switch()case"快吗?
Java中if/else与switch的相对性能是什么?
我已经在运行中进行编码....当调试器逐步执行case语句时,它会立即跳转到与条件匹配的项,但是当使用if/else指定相同的逻辑时,它会逐步执行每个if语句直到它找到胜利者.case语句是否更有效,或者我的调试器只是优化了一步?(不要担心语法/错误,我在SO中键入它,不知道它是否会编译,它的原理我之后,我不想做它们作为int因为我依稀记得一些关于使用带有整数的偏移的情况)我使用C#,但我对编程语言的一般答案感兴趣.
switch(myObject.GetType()){
case typeof(Car):
//do something
break;
case typeof(Bike):
//do something
break;
case typeof(Unicycle):
//do something
break;
case default:
break;
}
Run Code Online (Sandbox Code Playgroud)
VS
Type myType = myObject.GetType();
if (myType == typeof(Car)){
//do something
}
else if (myType == typeof(Bike)){
//do something
}
else if (myType == typeof(Unicycle)){
//do something
}
else{
}
Run Code Online (Sandbox Code Playgroud) 另一个论坛上出现了一个问题,我知道如何修复它,但它揭示了我特有的编译器功能.该人收到错误"嵌入式语句不能是声明或标记语句",因为他们在没有括号的if语句后声明了变量.这不是他们的意图,但是他们在if语句之后立即注释掉了代码行,这使得变量声明成为执行的事实上的代码行.无论如何,这就是背景,这让我想到了这一点.
以下代码是非法的
if (true)
int i = 7;
Run Code Online (Sandbox Code Playgroud)
但是,如果你用括号括起来,那一切都是合法的.
if (true)
{
int i = 7;
}
Run Code Online (Sandbox Code Playgroud)
这两段代码都没用.然而第二个是好的.这种行为的具体解释是什么?
我在这做错了什么?
尝试匹配包含空格,小写,大写或数字的任何字符串.特殊字符也会很好,但我认为这需要转义某些字符.
TEST="THIS is a TEST title with some numbers 12345 and special char *&^%$#"
if [[ "$TEST" =~ [^a-zA-Z0-9\ ] ]]; then BLAH; fi
Run Code Online (Sandbox Code Playgroud)
这显然只测试上,下,数字和空格.虽然不起作用.
*更新*
我想我应该更具体一点.这是实际的实际代码行.
if [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then RETURN="FAIL" && ERROR="ERROR: Title can only contain upper and lowercase letters, numbers, and spaces!"; fi
Run Code Online (Sandbox Code Playgroud)
*更新*
./anm.sh: line 265: syntax error in conditional expression
./anm.sh: line 265: syntax error near `&*#]'
./anm.sh: line 265: ` if [[ ! "$TITLE" =~ [a-zA-Z0-9 $%^\&*#] ]]; then …Run Code Online (Sandbox Code Playgroud) 在python中有一个简单的方法来判断某些东西是不是一个序列?我试着这么做:
if x is not sequence但是python并不喜欢这样
通常,我在if语句中使用方括号:
if [ "$name" = 'Bob' ]; then ...
Run Code Online (Sandbox Code Playgroud)
但是,当我检查是否grep成功时,我不使用方括号:
if grep -q "$text" $file ; then ...
Run Code Online (Sandbox Code Playgroud)
声明中何时需要方括号if?
我试图编写一个使用if语句的Bash脚本.
if [$CHOICE -eq 1];
Run Code Online (Sandbox Code Playgroud)
剧本是给我的错误,直到我后得到的空间[和之前]如下所示:
if [ $CHOICE -eq 1 ];
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么方括号周围的空间在Bash中如此重要?
在学习bash的同时,我会看到四种使用if语句的方式:
bash中的Parenthesis和Square Brackets有什么区别.
如果我尝试编译
for(;;)
{
}
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)
Java编译器产生错误说Unreachable statement.但是,如果我添加另一个" 无法访问 "(根据我)break声明并使其成为:
for(;;)
{
if(false) break;
}
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)
它汇编.为什么它不会产生错误?
为什么第一次if编译好,第二次失败?
if(proceed) {int i;} // This compiles fine.
if(proceed) int i;// This gives an error. (Syntax error on token ")", { expected after this token)
Run Code Online (Sandbox Code Playgroud) 是否可以在MySQL中执行UPDATE查询,只有在满足某些条件时才更新字段值?像这样的东西:
UPDATE test
SET
CASE
WHEN true
THEN field = 1
END
WHERE id = 123
Run Code Online (Sandbox Code Playgroud)
换一种说法:
UPDATE test
SET
something = 1, /*field that always gets updated*/
CASE
WHEN true
THEN field = 1 /*field that should only get updated when condition is met*/
END
WHERE id = 123
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
if-statement ×10
bash ×4
java ×2
block ×1
c# ×1
declaration ×1
mysql ×1
performance ×1
python ×1
regex ×1
sequence ×1
sequences ×1
sql-update ×1
syntax ×1