Benötigen Sie einen Break-in-Schalter, wenn Return verwendet wird?
Lesezeit: 3 Minuten
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
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
Nanne
Sie brauchen keine Unterbrechung, die Rückkehr stoppt die Ausführung der Funktion.
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
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
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 ….
13601400cookie-checkBenötigen Sie einen Break-in-Schalter, wenn Return verwendet wird?yes
Was passiert, wenn $string=’testx’;
– Jagadeesan
13. Juni 2011 um 12:19 Uhr