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

Lesezeit: 3 Minuten

Benutzer-Avatar
EMV

Ich habe mich gefragt, ob ich es verwenden muss break in einem switch funktionieren wann return wird genutzt.

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

Ich habe es ausprobiert und es funktioniert auch ohne break. Aber ist das sicher?

  • Was passiert, wenn $string=’testx’;

    – Jagadeesan

    13. Juni 2011 um 12:19 Uhr

Benutzer-Avatar
insumität

Ja, können Sie verwenden return Anstatt von break

break ist optional und wird verwendet, um “fallen„Durch alle anderen case Aussagen. So return kann in ähnlicher Weise verwendet werden, als return beendet die Funktionsausführung.

Auch, wenn alle Ihre case Aussagen sind so:

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

Und nach dem switch Aussage, die Sie gerade haben return $resultverwenden return find_result(...); in jedem case wird Ihren Code viel besser lesbar machen.

Vergessen Sie zum Schluss nicht, die hinzuzufügen default Fall. Wenn Sie glauben, dass Ihr Code niemals die erreichen wird default Fall dann könnten Sie die verwenden assert funktionieren, weil man sich nie sicher sein kann.

  • Danke Luzhin, das dachte ich mir.

    – EMV

    13. Juni 2011 um 12:02 Uhr

Benutzer-Avatar
Nanne

Sie brauchen keine Unterbrechung, die Rückkehr stoppt die Ausführung der Funktion.

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

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

)

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

Nein, du brauchst kein break in einem switch case Aussage. Das break ist eigentlich optional, aber mit Vorsicht zu verwenden.

Sie brauchen es nicht, aber ich würde dringend dazu raten, es in jedem Fall als gute Praxis zu verwenden.

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

    – EMV

    13. Juni 2011 um 12:17 Uhr

  • Weniger Code! = besser. Gehen Sie Code-Golf spielen. Ich hätte lieber lesbaren, expliziten Code als überoptimierten Code, nur damit er auf Kosten der Lesbarkeit und Verständlichkeit in einer Zeile stehen kann.

    – Martin Bean

    14. November 2014 um 21:05 Uhr

  • Das kann man in beide Richtungen argumentieren. Einige Compiler warnen vor nicht ausführbarem Code nach einem Return in einem Schalter, andere nicht. Es ist eine persönliche Vorliebe, und zumindest für mich hängt es davon ab, wie oft ich von einem Sturz durch einen Schalter gebissen wurde. Ich mag es, den Bruch zu sehen.

    – Harry

    8. April 2016 um 5:16 Uhr

Benutzer-Avatar
MendelG

return gibt die Kontrolle an die aufrufende Methode zurück, wohingegen break springt zur ersten Anweisung nach dem Schalterblock.

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

    – EMV

    13. Juni 2011 um 12:17 Uhr

  • Weniger Code! = besser. Gehen Sie Code-Golf spielen. Ich hätte lieber lesbaren, expliziten Code als überoptimierten Code, nur damit er auf Kosten der Lesbarkeit und Verständlichkeit in einer Zeile stehen kann.

    – Martin Bean

    14. November 2014 um 21:05 Uhr

  • Das kann man in beide Richtungen argumentieren. Einige Compiler warnen vor nicht ausführbarem Code nach einem Return in einem Schalter, andere nicht. Es ist eine persönliche Vorliebe, und zumindest für mich hängt es davon ab, wie oft ich von einem Sturz durch einen Schalter gebissen wurde. Ich mag es, den Bruch zu sehen.

    – Harry

    8. April 2016 um 5:16 Uhr

Benutzer-Avatar
BenMorel

Break ist nur ein Warnhinweis, der verwendet wird, um die Kontrolle der Switch-Struktur daran zu hindern, in einen anderen Fall zu wechseln. Wenn Sie beispielsweise drei case-Anweisungen haben und der Wert für den ersten Fall steht und Sie case ohne Break-Struktur verwendet haben, dann 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 der switch case-Anweisung die Kontrolle entzieht was ist das Bedürfnis in diesem Moment …… hoffe es hilft ….

1360140cookie-checkBenötigen Sie einen Break-in-Schalter, wenn Return verwendet wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy