您好我希望找到正确的语法来更好地组织Flash AS3中的Case语句。所以下面例如不是有3个案例陈述,我不能以某种方式将它组织成1?
switch (refID)
{
case "TS_38":
pgBool = true;
break;
case "TS_37":
pgBool = true;
break;
case "TS_36":
pgBool = true;
break;
default:
pgBool = false;
//break;
}
我尝试了这个,但它在我的测试中没有用:
switch (refID)
{
case "TS_38", "TS_37", "TS_36":
pgBool = true;
break;
default:
pgBool = false;
//break;
}
答案 0 :(得分:6)
试试这个:
switch (refID)
{
case "TS_38":
case "TS_21":
case "TS_21":
pgBool = true;
break;
default:
pgBool = false;
//break;
}
答案 1 :(得分:1)
你可以这样做:
switch (refID)
{
case "TS_38":
case "TS_21":
case "TS_21":
pgBool = true;
break;
default:
pgBool = false;
//break;
}
答案 2 :(得分:1)
您也可以使用if语句而不是switch,然后您可以使用&&和||操作符:
if (refID == "TS_38" || refID == "TS_21" || refID == "TS_21") {
pgBool = true;
} else {
pgBool = false;
}
我不禁注意到......你的两个案件是相同的。
答案 3 :(得分:1)
在此示例中考虑不使用switch case。切换案例不是编写代码的最短方式,它经常会提示您编写冗余代码(您的示例是“错误代码的好例子”)。
您的代码可以像这样编写:
pgBool = ["TS_38", "TS_21"].indexOf(refID) > -1;
或
pgBool = refID in {"TS_38" : "", "TS_21" : ""};
(大多数情况下,您希望重用数组/对象,如果要多次调用此函数)。
正如我所看到的,这个答案被低估了几次,我觉得这需要更深入的解释。
首先,为什么使用散列表比switch-case更好。
可扩展。如果将哈希表存储在必须做出决定的函数之外,则无需更改决策的函数,添加或删除表中的键 - 这更灵活,允许更易读码。它还允许运行时修改,切换情况不可能。
调用散列表是因为它散列了密钥,确保存储在表中的值的访问时间是恒定的(通常非常小)。同时,在AS3中编码的switch-case作为if-else子句的简单链,这意味着切换情况越长,该函数验证每个条件所需的时间就越多。虽然switch-case可以让您对测试条件的顺序进行一定的控制,但您很少会事先告诉哪些情况会更频繁地触发。哈希表会平等对待所有条件。
这意味着,在实践中,从不有理由选择switch-case到hash-table。有些语言,特别是Python,甚至没有这个结构也是出于同样的原因。
答案 4 :(得分:1)
不知道您可能遇到的其他情况,但是您提供的示例可以完全删除switch语句:
if(refId.split("_")[0] == "TS"){
pgBool = true;
}
else{
pgBool = false;
}