2011-06-13 24 views
67

Me preguntaba si necesito usar "break" en la función "cambiar" cuando se usa "return".¿Necesita un interruptor de ruptura cuando se usa el retorno?

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

Lo he probado, y funciona perfectamente sin "interrupción". Pero necesito saber si esto es seguro. Gracias.

+1

qué pasará si $ string = 'testx'; – Jagadeesan

Respuesta

83

Sí se puede utilizar en lugar de returnbreak ...

break es opcional y se usa para prevenir la "caída" a través de todos los demás case declaraciones. Por lo tanto, return se puede usar de manera similar, ya que return finaliza la ejecución de la función.

Además, si todas sus afirmaciones son case así:

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

y después de la declaración que acaba de switch tienen return $result, utilizando return find_result(...); en cada case hará que su código sea más legible.

Por último, no olvide agregar el caso default. Si cree que su código nunca llegará al caso default, entonces podría usar la función assert, porque nunca puede estar seguro.

+0

Gracias Luzhin, eso es lo que pensé. – EMC

+0

Sanidad aquí! – KLVTZ

7

No necesita descanso, la devolución detiene la ejecución de la función.

(para referencia: http://php.net/manual/en/function.return.php dice:

Si llama desde dentro de una función, la sentencia return() termina inmediatamente la ejecución de la función actual

)

2

No, no necesita un break en una declaración switch case. El break es realmente opcional, pero úselo con precaución.

1

No lo necesita, pero le recomiendo usarlo en cualquier caso como una buena práctica.

+5

no tiene sentido, ya que el retorno existe claramente por sí mismo en la ejecución =) Menos código es mejor. – EMC

+4

¡Menos código! = Mejor. Ir a jugar al golf de código. Prefiero tener un código legible y explícito que el código sobre-optimizado solo para que pueda estar en una línea a expensas de la legibilidad y la comprensibilidad. –

+1

Puede discutir esto en ambos sentidos. Algunos compiladores advierten sobre código no ejecutable después de un retorno en un cambio, otros no. Es una preferencia personal, y para mí al menos está coloreado por la cantidad de veces que me han picado al caerme por un interruptor, me gusta ver el descanso. – Harry

4

No es necesario, porque cuando se invoca la palabra clave return, indicará que la función particular a la que se llamó el interruptor/caso ha llegado a su fin.

2

La ruptura es solo una advertencia para limitar el control de la estructura del interruptor en otro caso ... por ejemplo, si tiene tres declaraciones de caso y el valor es para el primer caso y ha utilizado el caso sin ninguna estructura de ruptura todos los casos siguientes se ejecutarán a pesar de que la condición se cumpla solo para el primer caso ... El retorno puede realizar la función asme para que no sea un problema si utiliza el retorno en lugar del corte porque el retorno le quitará el control de la declaración de caso interruptor que es la necesidad en ese momento ...... creo que sirve ....

0

retorno devuelve el control al método de llamada, donde como break salta a la primera instrucción después del bloque de conmutadores.

Cuestiones relacionadas