Hai bisogno di un interruttore di interruzione quando viene utilizzato il ritorno?


110

Mi chiedevo se è necessario utilizzare "break" nella funzione "switch" quando viene utilizzato "return".

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

L'ho provato e funziona perfettamente senza "interruzioni". Ma ho bisogno di sapere se è sicuro. Grazie.


1
cosa succederà se $ string = 'testx';
Jagadeesan

Risposte:


132

Sì, puoi usare al returnposto di break...

breakè facoltativo e viene utilizzato per evitare di " cadere " in tutte le altre caseistruzioni. Quindi returnpuò essere utilizzato in modo simile, poiché returntermina l'esecuzione della funzione.

Inoltre, se tutte le tue casedichiarazioni sono così:

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

E dopo la switchdichiarazione che hai appena fatto return $result, l'uso return find_result(...);in ciascuna caserenderà il tuo codice molto più leggibile.

Infine, non dimenticare di aggiungere la defaultcustodia. Se pensi che il tuo codice non raggiungerà mai il defaultcaso, allora potresti usare la assertfunzione, perché non puoi mai esserne sicuro.


Grazie Luzhin, questo è quello che pensavo.
EMC

16

Non è necessaria una pausa, il ritorno interrompe l'esecuzione della funzione.

(per riferimento: http://php.net/manual/en/function.return.php dice:

Se chiamata dall'interno di una funzione, l'istruzione return () termina immediatamente l'esecuzione della funzione corrente

)


4

No, non è necessario, perché quando viene chiamata la parola chiave return indicherà che la particolare funzione che lo switch / case è stato chiamato è giunta al termine.


3

No, non hai bisogno breakdi una switch casedichiarazione. In breakrealtà è facoltativo, ma usalo con cautela.


2

Non ne hai bisogno, ma ti consiglio caldamente di utilizzarlo comunque come buona pratica.


6
non ha senso, poiché il ritorno esiste chiaramente da solo durante l'esecuzione =) Meno codice è meglio.
EMC

7
Meno codice! = Meglio. Vai a giocare a golf in codice. Preferisco avere un codice leggibile ed esplicito piuttosto che un codice iperottimizzato solo per poter essere su una riga a scapito della leggibilità e della comprensibilità.
Martin Bean

3
Puoi discuterne in entrambi i modi. Alcuni compilatori avvisano del codice non eseguibile dopo un ritorno in uno switch, altri no. È una preferenza personale, e per me almeno è colorato da quante volte sono stato morso cadendo da un interruttore, mi piace vedere la rottura.
Harry

2

Break è solo un'affermazione cautelativa usata per limitare il controllo della struttura dell'interruttore dall'entrare in un altro caso ... per esempio se hai tre istruzioni case e il valore è per il primo caso e hai usato case senza alcuna struttura break, allora tutti i seguenti casi verrà eseguito nonostante la condizione sia soddisfatta solo per il primo caso ... Return può eseguire la funzione asme quindi non saràun problema se usi return al posto di break perché return toglierà il controllo dall'istruzione switch case qual è il bisogno in quel momento ...... spero che aiuti ....


1

return restituisce il controllo al metodo chiamante, dove come break salta alla prima istruzione dopo il blocco switch.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.