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.

EMV
quelle
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.

Insumity
quelle
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

)

Nanne
quelle
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.

Gayan Hewa
quelle
3

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

Halcyon
quelle
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 ....

Abhimanyu Srivastava
quelle
1

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

Martin Bean
quelle
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.

Nishant Baranwal
quelle