Benötigen Sie einen Break-In-Schalter, wenn Return verwendet wird?


109

Ich habe mich gefragt, ob ich "break" in der Funktion "switch" verwenden muss, wenn "return" verwendet wird.

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

Ich habe es versucht und es funktioniert gut ohne "Pause". Aber ich muss wissen, ob das sicher ist. Danke dir.


1
Was passiert, wenn $ string = 'testx';
Jagadeesan

Antworten:


131

Ja, Sie können returnanstelle von break...

breakist optional und wird verwendet, um zu verhindern, dass alle anderen Anweisungen " fallen " case. So returnkann in ähnlicher Weise verwendet werden, wie returnendet die Funktion der Ausführung.

Auch wenn alle Ihre caseAussagen so sind:

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

Und nach der switchAnweisung, die Sie gerade haben return $result, macht die Verwendung return find_result(...);in jedem caseIhren Code viel lesbarer.

Vergessen Sie nicht, den defaultFall hinzuzufügen . Wenn Sie glauben, dass Ihr Code den defaultFall niemals erreichen wird, können Sie die assertFunktion verwenden, da Sie nie sicher sein können.


Danke Luzhin, das habe ich mir gedacht.
EMC

16

Sie brauchen keine Pause, die Rückgabe stoppt die Ausführung der Funktion.

(als Referenz: http://php.net/manual/en/function.return.php sagt:

Wenn die Anweisung return () innerhalb einer Funktion aufgerufen wird, wird die Ausführung der aktuellen Funktion sofort beendet

)


4

Nein, es ist nicht notwendig, denn wenn das Schlüsselwort return aufgerufen wird, zeigt dies an, dass die bestimmte Funktion, die der Schalter / Fall aufgerufen wurde, beendet wurde.


3

Nein, Sie brauchen nicht zu einem breakin einer switch caseErklärung. Das breakist eigentlich optional, aber mit Vorsicht zu verwenden.


2

Break ist nur eine warnende Anweisung, die verwendet wird, um zu verhindern, dass die Steuerung der Schalterstruktur in einen anderen Fall übergeht. Wenn Sie beispielsweise drei case-Anweisungen haben und der Wert für den ersten Fall gilt und Sie case ohne Unterbrechungsstruktur verwendet haben, gelten alle folgenden Fälle wird ausgeführt, obwohl die Bedingung nur für den ersten Fall erfüllt ist ... Return kann die asme-Funktion ausführen, sodass es kein Problem darstellt, wenn Sie return anstelle von break verwenden, da return die Kontrolle von der switch case-Anweisung übernimmt Welches ist die Notwendigkeit in diesem Moment ...... hoffe, es hilft ....


1

Sie brauchen es nicht, aber ich würde dringend empfehlen, es auf jeden Fall als gute Praxis zu verwenden.


6
Kein Sinn, da die Rückgabe bei der Ausführung eindeutig von selbst existiert =) Weniger Code ist besser.
EMC

6
Weniger Code! = Besser. Spielen Sie Code Golf. Ich hätte lieber lesbaren, expliziten Code als überoptimierten Code, nur damit er auf Kosten der Lesbarkeit und Verständlichkeit in einer Zeile steht.
Martin Bean

3
Sie können dies in beide Richtungen argumentieren. Einige Compiler warnen nach einer Rückkehr in einem Switch vor nicht ausführbarem Code, andere nicht. Es ist eine persönliche Präferenz, und für mich hängt es zumindest davon ab, wie oft ich durch einen Schalter gebissen wurde. Ich sehe gerne die Pause.
Harry

1

return gibt die Steuerung an die aufrufende Methode zurück, wobei als break zum ersten Befehl nach dem Schalterblock springt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.