使用return时需要断开开关吗?


110

我想知道当使用“返回”时是否需要在“切换”功能中使用“中断”。

function test($string)
{
  switch($string)
  {
    case 'test1':
      return 'Test 1: ' . $string;
    case 'test2':
      return 'Test 2: ' . $string;
  }
}

我已经尝试过了,它可以正常工作而不会“中断”。但是我需要知道这是否安全。谢谢。


1
如果$ string ='testx'会发生什么;
Jagadeesan

Answers:


132

是的,您可以使用return代替break...

break是可选的,用于防止所有其他语句“ 掉落case。因此return可以以类似的方式使用,以return结束函数执行。

另外,如果您的所有case陈述都是这样的:

case 'foo':
   $result = find_result(...);
   break;

switchreturn $result使用了语句之后,return find_result(...);在每个语句中使用case可使代码更易读。

最后,不要忘记添加default案例。如果您认为您的代码永远无法解决问题,default则可以使用该assert函数,因为您无法确定。


谢谢卢珍,那是我的想法。
EMC


4

并非没有必要,因为调用关键字return时,它将指示已调用开关/案例的特定功能已结束。


3

不,你不需要break在一个switch case声明。该break实际上是可选的,但谨慎使用。


2

您不需要它,但我强烈建议您在任何情况下都应将其作为良好实践使用。


6
没有意义,因为返回在执行时很明显就存在返回本身=)更少的代码更好。
EMC

7
更少的代码!=更好。去打代码高尔夫。我宁愿使用可读的,显式的代码,也不愿对代码进行过度的优化,因为这样一来,它就可能以可读性和可理解性为代价而处于同一行。
Martin Bean

3
您可以双向争论。有些编译器在切换后返回警告非可执行代码,有些则没有。这是个人喜好,至少对我来说,它是被开关掉下后被叮咬的次数所涂的,我喜欢看到断裂。
哈里

2

Break只是一个警告性语句,用于限制对开关结构的控制,避免进入另一种情况。例如,如果您有三个case语句,并且值是第一种情况,并且您使用过case时没有任何break结构,那么以下所有情况尽管仅在第一种情况下才满足条件,但仍将执行... Return可以执行asme函数,因此如果使用return代替break不会有问题,因为return将使控制权脱离switch case语句当时需要的是……希望能有所帮助。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.