Avez-vous besoin d'un interrupteur de rupture lorsque le retour est utilisé?

110

Je me demandais si je devais utiliser "break" dans la fonction "switch" lorsque "return" est utilisé.

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

Je l'ai essayé, et cela fonctionne très bien sans "pause". Mais j'ai besoin de savoir si c'est sûr. Je vous remercie.

EMC
la source
1
que se passera-t-il si $ string = 'testx';
Jagadeesan

Réponses:

132

Oui, vous pouvez utiliser à la returnplace de break...

breakest facultatif et est utilisé pour éviter de " tomber " à travers toutes les autres caseinstructions. So returnpeut être utilisé de la même manière, comme returnse termine l'exécution de la fonction.

Aussi, si toutes vos casedéclarations sont comme ceci:

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

Et après la switchdéclaration que vous venez d'avoir return $result, utiliser return find_result(...);dans chacun caserendra votre code beaucoup plus lisible.

Enfin, n'oubliez pas d'ajouter le defaultcas. Si vous pensez que votre code n'atteindra jamais le defaultcas, vous pouvez utiliser la assertfonction, car vous ne pouvez jamais être sûr.

insumité
la source
Merci Luzhin, c'est ce que je pensais.
EMC
16

Vous n'avez pas besoin de pause, le retour arrête l'exécution de la fonction.

(pour référence: http://php.net/manual/en/function.return.php dit:

Si elle est appelée depuis une fonction, l'instruction return () met immédiatement fin à l'exécution de la fonction courante

)

Nanne
la source
4

Non, ce n'est pas nécessaire, car lorsque le mot clé return est appelé, cela indiquera que la fonction particulière à laquelle le commutateur / le cas a été appelé a pris fin.

Gayan Hewa
la source
3

Non, vous n'avez pas besoin breakd'une switch casedéclaration. Le breakest en fait facultatif, mais à utiliser avec prudence.

Alcyon
la source
2

Vous n'en avez pas besoin, mais je vous conseille vivement de l'utiliser dans tous les cas comme une bonne pratique.

Martin Bean
la source
6
aucun point, puisque le retour existe clairement par lui-même à l'exécution =) Moins de code, c'est mieux.
EMC
7
Moins de code! = Mieux. Allez jouer au golf code. Je préfère avoir un code lisible et explicite plutôt qu'un code sur-optimisé juste pour qu'il puisse être sur une seule ligne au détriment de la lisibilité et de la compréhensibilité.
Martin Bean
3
Vous pouvez argumenter dans les deux sens. Certains compilateurs avertissent du code non exécutable après un retour dans un commutateur, d'autres non. C'est une préférence personnelle, et pour moi au moins c'est coloré par le nombre de fois où j'ai été mordu en tombant à travers un interrupteur, j'aime voir la rupture.
Harry
2

Break est juste une mise en garde utilisée pour empêcher le contrôle de la structure du commutateur d'entrer dans un autre cas ... par exemple, si vous avez trois instructions case et que la valeur est pour le premier cas et que vous avez utilisé case sans aucune structure de rupture, tous les cas suivants sera exécuté même si la condition n'est satisfaite que pour le premier cas ... Return peut exécuter la fonction asme donc ce ne sera pas un problème si vous utilisez return à la place de break car return prendra le contrôle de l'instruction switch case quel est le besoin à ce moment-là ... j'espère que cela aidera ...

Abhimanyu Srivastava
la source
1

return redonne le contrôle à la méthode appelante, où as break saute à la première instruction après le bloc de commutation.

Nishant Baranwal
la source