落在开关盒上?

时间:2011-08-19 03:27:25

标签: php javascript

当我在PHP网站上阅读时,我正在编写一个switch case:

Thus, it is important not to forget break statements (even though you may want to avoid supplying them on purpose under certain circumstances).

没有break语句的switch case非常适合我想做的事情。我想要在匹配的一个下面的所有情况执行。为什么这是错误的,以不同方式做到这一点的最佳方式是什么?

对所有语言都不好,还是只对PHP?为什么呢?

编辑:无论是否存在问题,有没有办法在没有开关的情况下做同样的事情?

3 个答案:

答案 0 :(得分:4)

正如它所指出的那样 - 即使您可能希望在某些情况下避免故意提供​​。只要你知道自己在做什么,那么坠入案件不是问题。就个人而言,我认为使用案例陈述是如此有用(而不是&&'s,但那只是我)是一个很大的原因。

所以答案是,对任何特定的语言来说都不错,因为你没有与语言作斗争。

答案 1 :(得分:0)

关于switch语句落实执行的观点通常反映了关于goto的观点。

Switch应该是互斥的,但是可以通过使用goto关键字来获取(在c#中)。由于PHP添加了goto关键字,您可以执行类似的操作。转换文档中的MSFT示例为here

就个人而言,我发现要明确我需要执行的代码是非常明确的,这些代码是互斥的。我发现我添加/删除了切换语句的情况,因此在使用允许直接执行的语言时确保它们被正确排序会让人头疼。

答案 2 :(得分:-1)

总之:资源

如果您使用 IF 构造,解释器将检查每种可能性,以便查找 TRUE FALSE ,此浪费资源内存 CPU 。 使用 BREAK SWITCH 语句的所有要点是 SPARE资源,因为当找到匹配条件时,解释程序将 BREAK 并且不会尝试找到更多匹配项。

您可以使用 IF ELSE ELSEIF 构造轻松完成您所做的工作,而不是使用 SWITCH < / strong>声明,如果你不介意浪费资源,当然。