Você precisa interromper o interruptor quando o retorno é usado?

110

Gostaria de saber se preciso usar "break" na função "switch" quando "return" é usado.

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

Eu tentei e funciona muito bem sem "quebrar". Mas preciso saber se isso é seguro. Obrigado.

EMC
fonte
1
o que acontecerá se $ string = 'testx';
Jagadeesan

Respostas:

132

Sim, você pode usar em returnvez de break...

breaké opcional e é usado para evitar " queda " em todas as outras caseinstruções. Portanto, returnpode ser usado de maneira semelhante, comoreturn termina a execução da função.

Além disso, se todas as suas casedeclarações forem assim:

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

E depois do switchdemonstrativo que você acabou de ter return $result, usando return find_result(...);em cadacase um tornará seu código muito mais legível.

Por último, não se esqueça de adicionar o defaultcaso. Se você acha que seu código nunca alcançará o defaultcaso, então você pode usar a assertfunção, porque você nunca pode ter certeza.

insumidade
fonte
Obrigado Lujin, foi o que pensei.
EMC
16

Você não precisa de uma pausa, o retorno interrompe a execução da função.

(para referência: http://php.net/manual/en/function.return.php diz:

Se chamado de dentro de uma função, a instrução return () termina imediatamente a execução da função atual

)

Nanne
fonte
4

Não, não é necessário, porque quando a palavra-chave return for chamada, ela indicará que a função específica para a qual o switch / case foi chamado chegou ao fim.

Gayan Hewa
fonte
3

Não, você não precisa de um breakem uma switch casedeclaração. Na breakverdade, o é opcional, mas use com cuidado.

idílico
fonte
2

Você não precisa disso, mas eu recomendo enfaticamente usá-lo em qualquer caso como uma boa prática.

Martin Bean
fonte
6
nenhum ponto, uma vez que o retorno existe claramente por si mesmo na execução =) Menos código é melhor.
EMC
7
Menos código! = Melhor. Vá jogar golfe de código. Eu prefiro ter um código legível e explícito do que um código superotimizado apenas para que possa ficar em uma linha à custa da legibilidade e compreensão.
Martin Bean
3
Você pode argumentar das duas maneiras. Alguns compiladores alertam sobre o código não executável após um retorno em uma opção, outros não. É uma preferência pessoal, e pelo menos para mim é influenciada pelo número de vezes que fui mordido por uma queda em uma alavanca, gosto de ver a quebra.
Harry,
2

Breakéapenas uma declaração de advertência usada para limitar o controle da estrutura da chave de ir para outro caso ... por exemplo se você tem três declarações de caso e valor é para o primeiro caso e você usou o caso sem qualquer estrutura de quebra então todos os seguintes casos será executado apesar da condição ser satisfeita apenas para o primeiro caso ... Return pode executar a função asme, então não será um problema se você usar return no lugar de break porque return tirará o controle da instrução switch case que é a necessidade naquele momento ...... espero que ajude ....

Abhimanyu Srivastava
fonte
1

return devolve o controle ao método de chamada, onde as break salta para a primeira instrução após o bloco switch.

Nishant Baranwal
fonte