Flash 如何将AS3案例陈述组织成一行?
嗨,我希望找出正确的语法是什么,以便更好地组织FlashAS3中的Case语句。例如,下面不是3个case语句,我能把它组织成1个吗Flash 如何将AS3案例陈述组织成一行?,flash,actionscript-3,switch-statement,case,Flash,Actionscript 3,Switch Statement,Case,嗨,我希望找出正确的语法是什么,以便更好地组织FlashAS3中的Case语句。例如,下面不是3个case语句,我能把它组织成1个吗 switch (refID) { case "TS_38": pgBool = true; break; case "TS_37": pgBool = true; break; case "TS_36": pgBool = true; brea
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;
}
您可以这样做:
switch (refID)
{
case "TS_38":
case "TS_21":
case "TS_21":
pgBool = true;
break;
default:
pgBool = false;
//break;
}
您可以这样做:
switch (refID)
{
case "TS_38":
case "TS_21":
case "TS_21":
pgBool = true;
break;
default:
pgBool = false;
//break;
}
试试这个:
switch (refID)
{
case "TS_38":
case "TS_21":
case "TS_21":
pgBool = true;
break;
default:
pgBool = false;
//break;
}试试这个:
switch (refID)
{
case "TS_38":
case "TS_21":
case "TS_21":
pgBool = true;
break;
default:
pgBool = false;
//break;
}您也可以使用if语句而不是switch,然后可以使用&&和| |运算符:
if (refID == "TS_38" || refID == "TS_21" || refID == "TS_21") {
pgBool = true;
} else {
pgBool = false;
}
我忍不住注意到……您的两个案例是相同的。您也可以使用if语句而不是switch,然后可以使用&&和| |运算符:
if (refID == "TS_38" || refID == "TS_21" || refID == "TS_21") {
pgBool = true;
} else {
pgBool = false;
}
我忍不住注意到……您的两个案例是相同的。在本例中,请考虑不使用switch case。Switch case不是编写代码的最短方法,它经常提示您编写冗余代码(您的示例是“坏代码的好示例”) 您的代码可以这样编写:
pgBool = ["TS_38", "TS_21"].indexOf(refID) > -1;
或
(如果要多次调用此函数,您肯定希望重用数组/对象)
我已经看到这个答案被否决了好几次,我觉得它需要更深入的解释 首先,为什么使用哈希表比切换大小写更可取
这意味着,在实践中,永远没有理由选择开关大小写而不是哈希表。由于同样的原因,有些语言,例如Python,甚至没有这种结构。考虑在本例中不使用switch-case。Switch case不是编写代码的最短方法,它经常提示您编写冗余代码(您的示例是“坏代码的好示例”) 您的代码可以这样编写:
pgBool = ["TS_38", "TS_21"].indexOf(refID) > -1;
或
(如果要多次调用此函数,您肯定希望重用数组/对象)
我已经看到这个答案被否决了好几次,我觉得它需要更深入的解释 首先,为什么使用哈希表比切换大小写更可取
这意味着,在实践中,永远没有理由选择开关大小写而不是哈希表。有些语言,如Python,出于同样的原因,甚至没有这种结构。不知道您可能会遇到其他情况,但通过您给出的示例,您可以完全删除switch语句:
if(refId.split("_")[0] == "TS"){
pgBool = true;
}
else{
pgBool = false;
}
不知道您可能会遇到什么其他情况,但通过您给出的示例,您可以完全删除switch语句,方法是:
if(refId.split("_")[0] == "TS"){
pgBool = true;
}
else{
pgBool = false;
}
哦,那是偶然的,呵呵,我有30个在里面,而且正在快速移除它们…哦,那是偶然的,呵呵,我有30个在里面,并且正在快速移除它们…哦,太酷了!好的,所以基本上是布尔检查它是否匹配,然后它将=0或1,嗯?听起来很有趣,我从未使用过这种技术。我将来会尝试一下,但据我所知,数组的indexOf方法非常慢,这很酷!好的,所以基本上是布尔检查它是否匹配,然后它将=0或1,嗯?听起来很有趣,我从未使用过这种技术。我将来会尝试一下,但据我所知,数组的indexOf方法相当慢!我完全可以用这个做其他的事情,但是对于这个项目,我们所有的id都是从TS开始的:(谢谢!我完全可以用这个做其他的事情,但是对于这个项目,我们所有的id都是从TS开始的:(