tipo son régimen qué que presentan por operaciones objetivo las inversiones internacionales exterior declaración declaraciones declaracion cuales concepto comercio codigos cambio cambiario cambiarias php c++ language-agnostic switch-statement

php - son - objetivo de la declaracion de cambio



¿Alguna vez debo usar continue dentro de una declaración de cambio? (7)

Observé que puedes usar la palabra clave continue en una declaración de cambio, pero en PHP no hace lo que esperaba.

Si falla con PHP, ¿quién sabe cuántos otros idiomas también falla? Si cambio mucho de un idioma a otro, esto puede ser un problema si el código no se comporta como espero que se comporte.

¿Debería simplemente evitar continue en una instrucción switch?

PHP (5.2.17) falla:

for($p = 0; $p < 8; $p++){ switch($p){ case 5: print"($p)"; continue; print"*"; // just for testing... break; case 6: print"($p)"; continue; print"*"; break; } print"$p/r/n"; } /* Output: 0 1 2 3 4 (5)5 (6)6 7 */

C ++ parece funcionar como se espera (salta al final del ciclo for):

for(int p = 0; p < 8; p++){ switch(p){ case 5: cout << "(" << p << ")"; continue; cout << "*"; // just for testing... break; case 6: cout << "(" << p << ")"; continue; cout << "*"; break; } cout << p << "/r/n"; } /* Output: 0 1 2 3 4 (5)(6)7 */


Como se advierte en el Manual de PHP :

"Tenga en cuenta que en PHP la instrucción switch se considera una estructura de bucle para los fines de continuar".

Entonces, el uso de continuar saldrá de la instrucción switch, no del ciclo for. Los peligros de asumir una sintaxis similar en todos los idiomas.


Desafortunadamente, continue y break son los mismos en PHP cuando se usan declaraciones de switch .

No permita que PHP arruine sus experiencias en otros idiomas, y continúe usando ¡ continue donde lo necesite!


El uso de continuar dentro de un C ++ switch / case construct que está incrustado en un bucle está perfectamente bien. No debe restringir su estilo en C ++ solo por el mal comportamiento que ocurre en otros lenguajes de programación.


En C y C ++, la instrucción switch es solo una combinación elegante de if/else if y labels / goto , por lo que usar continue inside switch está bien. Pero como notó, no hace lo que espera en otros lenguajes que son similares a C o C ++. Eso es porque solo son similares cuando se trata de sintaxis, para las reglas semánticas son bestias muy diferentes. Entonces, una cosa que funciona en un idioma definitivamente no funcionará en otro, incluso si los idiomas son similares.


Es importante tener en cuenta que continue y break no se comportan igual cuando la instrucción switch está anidada dentro de un bucle. Si está utilizando una instrucción switch para evaluar algo, y desea pasar al siguiente elemento dentro del ciclo si se cumple la condición, debe usar continue 2 . El uso de break 2 en este caso saldrá de todo el ciclo for , lo que puede no ser la acción deseada.


Intente utilizar continue 2 para continuar con la siguiente iteración del ciclo que rodea la instrucción de cambio.

EDITAR:

$foo = ''Hello''; for ($p = 0; $p < 8; $p++) { switch($p) { case 3: if ($foo === ''Hello'') { echo $foo; break; } else { continue 2; } default: echo "Sleeping...<br>"; continue 2; } echo "World!"; break; }

//This will print: Sleeping... Sleeping... Sleeping... Hello World!


La documentación para la declaración de PHP continue deja esto en claro:

Nota: Tenga en cuenta que en PHP, la instrucción switch se considera una estructura de bucle a los efectos de continuar .

Debe saber que los diferentes idiomas dan a las mismas palabras con significados sutilmente diferentes, y no asumen que PHP continue comportándose igual que C ++.

Si continue tiene sentido en un modificador de PHP donde no funcionaría en C ++, utilícelo.

Si continue tiene sentido en un switch C ++ donde no funcionaría en PHP, utilízalo.