我针对其他语言查看了一些与此相关的问题,有人建议使用final
,但这似乎不适用于Dart。
我要传递参数,所以确定switch语句不能仅包含常量吗?一个switch语句,就像if语句在询问 if 是否存在。.ie未知,所以我看不到switch语句必须是常量时如何有用... ?
setCategory(arga, argb) {
int result;
switch (true) {
case (arga >= 0 && arga < 3 && argb < 35):
result = 16;
break;
case (arga >= 0 && arga < 3 && argb >= 35):
result = 15;
break;
etc
它返回有关case表达式中的arga和argb值的错误Case expressions must be constant
。解决此问题的最佳方法是什么,还是必须使用if语句?
答案 0 :(得分:2)
Switch Case有一些规则
默认情况是可选的。
所有大小写表达式必须唯一。
case语句只能包含常量。它不能是变量或表达式。
变量的数据类型和case表达式必须匹配。
开关中可以有任意数量的case语句。
您应使用'If Else'语句
答案 1 :(得分:1)
确定开关条件表达式必须是常量。
您必须使用if
/ then
链基于非恒定值进行多次测试。
在切换情况下,不能使用周围函数的参数。 Dart switch语句不支持您要在此处执行的操作。
故意将Dart switch语句保持非常简单,以便编译器可以在编译时知道所有可能的情况。这就是为什么它们必须是编译时常量的原因。
switch语句对于某些类型的切换仍然有用,例如枚举:
enum Nonse { foo, bar, baz; }
String fooText(Nonse non) {
switch (non) {
case Nonse.foo: return "foo";
case Nonse.bar: return "bar";
case Nonse.baz: return "baz";
}
throw ArgumentError.notNull("non");
}
您还可以切换常量字符串值或整数值。
答案 2 :(得分:0)
switch语句需要一个常量->这意味着已初始化且具有最终值的变量
switch (expression) {
case ONE : {
statement(s);
}
break;
case TWO: {
statement(s);
}
break;
default : {
statement(s);
}
}
答案 3 :(得分:0)
for(int x=0; x<1; x++){
if(ing5<8 && toWhatDegreeRand<=10 && toWhatDegreeRand>7){
toWhatDegreeRand=9;
}
if(ing4<8 && toWhatDegreeRand<=7 && toWhatDegreeRand>5){
toWhatDegreeRand=6;
}
if(ing3<8 && toWhatDegreeRand<=5 && toWhatDegreeRand>3){
toWhatDegreeRand=4;
}//....
}
它可能有点用。