我有一小部分关键字.我真正想做的是类似于:
case MyKeyword of
'CHIL': (code for CHIL);
'HUSB': (code for HUSB);
'WIFE': (code for WIFE);
'SEX': (code for SEX);
else (code for everything else);
end;
Run Code Online (Sandbox Code Playgroud)
不幸的是,CASE语句不能像字符串一样使用.
我可以使用直接的IF THEN ELSE IF结构,例如:
if MyKeyword = 'CHIL' then (code for CHIL)
else if MyKeyword = 'HUSB' then (code for HUSB)
else if MyKeyword = 'WIFE' then (code for WIFE)
else if MyKeyword = 'SEX' then (code for SEX)
else (code for everything else);
Run Code Online (Sandbox Code Playgroud)
但我听说这是相对低效的.
我一直在做的是:
P := pos(' ' + MyKeyword + …Run Code Online (Sandbox Code Playgroud) case在Delphi语句中使用类型常量的最优雅(或最不丑陋)的方法是什么?
也就是说,假设您需要声明一个类型化的常量
const
MY_CONST: cardinal = $12345678;
...
Run Code Online (Sandbox Code Playgroud)
那么Delphi编译器就不会接受
case MyExpression of
MY_CONST: { Do Something };
...
end;
Run Code Online (Sandbox Code Playgroud)
但你需要写
case MyExpression of
$12345678: { Do Something };
...
end;
Run Code Online (Sandbox Code Playgroud)
这容易出错,难以更新,也不优雅.
是否有任何技巧可以使编译器插入常量的值(最好通过检查const源代码中的常量值,但可能通过在运行时查找值)?我们假设您不会在运行时更改"常量"的值.
CASE
WHEN ' 1a' = ' 1a '
THEN 'EQUAL - but it isn´t- HELP!!!!' ELSE 'UNEQUAL'
END
from dual;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我,向我解释为什么数据库说这两个字符串是相同的
' 1a' = ' 1a '
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多陈述,但我找不到原因.我在Oracle 11g的规范中也进行了搜索,但没有任何解释.
模式匹配时我收到一个好奇的警告,但只有当OverloadedStrings被启用时...
$ ghci -Wall
GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> let f x = case (x :: [String]) of {[""] -> "root"; ["product", _] -> "product"; _ -> "unknown"}
Prelude> :q
Leaving GHCi.
$ ghci -Wall -XOverloadedStrings
GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... …Run Code Online (Sandbox Code Playgroud) 我正在将一些VB.NET代码转换为C#,因为我对它更熟悉,它可以帮助我更快地解决问题.但是,我遇到了这个代码,这不是VB.NET中的错误 - 但将其转换为C#会产生编译器错误.
Select Case name
Case "FSTF"
.....
Case "FSTF"
.....
End Select
Run Code Online (Sandbox Code Playgroud)
switch(name) {
case "FSTF":
....;
break;
case "FSTF":
....;
break;
}
Run Code Online (Sandbox Code Playgroud)
错误是:
Label'case"FSTF":'已经出现在这个switch语句中.
这里的解决方案是什么 - 这是否意味着在VB.NET代码中,第二个case语句只是一个虚拟 - 或者第一个是假的?
我想用verilog创建一个64位桶形移位器(现在向右旋转).我想知道是否有办法在不写65份案例陈述的情况下做到这一点?有没有办法写一些简单的代码,如:
Y = {S[i - 1:0], S[63:i]};
Run Code Online (Sandbox Code Playgroud)
我在Xilinx中尝试了上面的代码并得到一个错误:我不是一个常数.
主要问题:如果没有庞大的案例陈述,有没有办法做到这一点?
如何在一个内部处理多个值case?所以,如果我想执行的值相同的动作"first option"和"second option"?
这是正确的方法吗?
switch(text)
{
case "first option":
{
}
case "second option":
{
string a="first or Second";
break;
}
}
Run Code Online (Sandbox Code Playgroud) 我需要根据 CASE 语句为我的选择分配两个值。伪:
select
userid
, case
when name in ('A', 'B') then 'Apple'
when name in ('C', 'D') then 'Pear'
end as snack
from
table
;
Run Code Online (Sandbox Code Playgroud)
我正在为 分配一个值snack。但假设我还想drink根据相同的条件为另一个变量分配一个值。一种方法是重复上述内容:
select
userid
, case
when name in ('A', 'B') then 'Apple'
when name in ('C', 'D') then 'Pear'
end as snack
, case
when name in ('A', 'B') then 'Milk'
when name in ('C', 'D') then 'Cola'
end as drink
from
table
;
Run Code Online (Sandbox Code Playgroud)
但是,如果我必须根据相同的条件分配更多值,例如、food、等,则此代码将变得难以维护。drink …
#!/bin/bash
until [read command -eq "end"]
do
echo What command would like to run?
read command
if [$command -eq "my-tweets"]; then
node liri.js $command
fi
if [$command -eq "do-what-it-says"];then
node liri.js $command
fi
if [$command -eq "spotify-this-song"]; then
echo What item would like to query?
read item
node liri.js $command $item
fi
if [$command -eq "movie-this"]; then
echo What item would like to query?
read item
node liri.js $command $item
fi
done
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个 case/if 语句来在运行代码的下一部分之前检查变量的值。我想根据用户输入的值检查$command创建此 case/if 语句的值。我不断收到命令未找到错误。
我想将枚举常量用于 switch-case-语句。
我正在使用以下枚举/类:
public enum Cons {
ONE(1),
TWO(2);
private final int val;
private Cons(final int newVal) {
val = newVal;
}
public int getVal() {
return val;
}
}
public class Main {
public static void main(String[] args) {
int test;
// some code
switch(test) {
case Cons.ONE.getVal():
// ...
break;
case Cons.TWO.getVal():
// ...
break;
default:
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
“case 表达式必须是常量表达式” => 我的枚举的值不是常量,尽管该属性private final int val声明为final.
我如何使用这个枚举来进行案例陈述?
case-statement ×10
c# ×2
delphi ×2
.net ×1
bash ×1
bit-shift ×1
compare ×1
enums ×1
ghc ×1
haskell ×1
if-statement ×1
java ×1
lookup ×1
optimization ×1
oracle ×1
oracle11g ×1
rotation ×1
shift ×1
sql ×1
sql-server ×1
string ×1
vb.net ×1
vb.net-to-c# ×1
verilog ×1
warnings ×1