使用返回时是否需要中断开关?

EMC*_*EMC 89 php

我想知道当使用"return"时我是否需要在"switch"功能中使用"break".

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

我已经尝试过了,它没有"休息"就可以正常工作.但我需要知道这是否安全.谢谢.

ins*_*ity 111

是的,你可以用return而不是break......

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

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

case 'foo':
   $result = find_result(...);
   break;
Run Code Online (Sandbox Code Playgroud)

switch您刚才拥有的声明之后return $result,return find_result(...);在每个声明中使用case将使您的代码更具可读性.

最后,不要忘记添加default案例.如果您认为您的代码永远不会到达default案例,那么您可以使用该assert功能,因为您永远无法确定.


Nan*_*nne 12

您不需要休息,返回会停止执行该功能.

(供参考:http://php.net/manual/en/function.return.php说:

如果从函数内调用,则return()语句立即结束当前函数的执行

)


Gay*_*ewa 6

不,它不是必需的,因为当关键字 return 被调用时,它会指示调用 switch/case 的特定函数已经结束。


Hal*_*yon 5

不,你不需要breakswitch case声明中。该break实际上是可选的,但谨慎使用。


Mar*_*ean 5

您不需要它,但我强烈建议在任何情况下都使用它作为良好的做法。

  • 更少的代码!=更好。去玩代码高尔夫吧。我宁愿拥有可读的、明确的代码,也不愿拥有过度优化的代码,这样它就可以在一行上,但牺牲了可读性和可理解性。 (9认同)
  • 你可以从两个方面论证这一点。有些编译器会在 switch 返回后警告不可执行的代码,有些则不会。这是个人喜好,至少对我来说,它的颜色取决于我被开关摔倒的次数,我喜欢看到突破。 (7认同)
  • 没有意义,因为 return 显然在执行时自行存在 =) 代码越少越好。 (6认同)