iphone - programming - variables swift 3
objetivo C for-loop break y continue (6)
''break'' solo te sacará del bucle o interruptor más interno. Puede usar ''return'' para salir de una función en cualquier momento. Consulte this enlace.
¿Cómo puedo usar una declaración ''break'' dentro de un for-loop que continúa desde una etiqueta especificada?
ex;
outer: for(int i = 0;i<[arABFBmatches count];i++){
for(int i = 0;i<[arABFBmatches count];i++){
//
break _____;
}
}
¿Cómo romper al exterior?
Aproximadamente:
for(int i = 0;i<[arABFBmatches count];i++){
for(int j = 0;j<[arABFBmatches count];j++){
//
goto outer_done;
}
}
outer_done:
Objective-C no tiene rotura etiquetada.
De los documentos Objective-C de Apple:
Objective-C se define como un pequeño pero poderoso conjunto de extensiones para el lenguaje ANSI C estándar.
Entonces, break y continue pueden usarse donde sea que estén permitidos en C.
continuar puede usarse en construcciones de bucle (para, while y do / while loops).
break se puede usar en esas mismas construcciones de bucle, así como en instrucciones de conmutación.
Difícil de decir de tu pregunta. ¿Lo interpretaría que quiere omitir el resto de las iteraciones del bucle interno y continuar el bucle externo?
for (int i = 0; i < [arABFBmatches count]; i++) {
for (int j = 0; j < [arABFBmatches count]; j++) {
if (should_skip_rest)
break; // let outer loop continue iterating
}
}
Tenga en cuenta que he cambiado el nombre de su bucle interno invariante; usar i
en ambos es invitar a la locura.
Si quieres romper con ambos bucles, no usaría un goto. Lo haría:
BOOL allDoneNow = NO;
for (int i = 0; i < [arABFBmatches count]; i++) {
for (int j = 0; j < [arABFBmatches count]; j++) {
if (should_skip_rest) {
allDoneNow = YES;
break;
}
}
if (allDoneNow) break;
}
voto abajo ...... Si usar goto simplifica el código, entonces sería apropiado.
for (;;)
{
for (;;)
{
break; /* breaks inner loop */
}
for (;;)
{
goto outer; /* breaks outer loop */
}
}
outer:;
BOOL done = NO;
for(int i = 0;i<[arABFBmatches count] && !done; i++)
{
for(int i = 0;i<[arABFBmatches count] && !done;i++)
{
if (termination condition)
{
// cleanup
done = YES;
}
}
}