¿Cómo reducir el anidamiento de estos condicionales condicionales?
Frecuentes
Visto 122 veces
2
tengo un pequeño problema :D no puedo encontrar las palabras correctas para buscar así que escribí esta pregunta. ¿Cómo consigo esto más corto? Lo sé con esta lógica || pero ¿cómo podría agregar más de 1 en una línea? Gracias por tu tiempo Saludos cordiales John
bool b = [self NSStringContains:convert contains:@"Input"];
if (b ==true)
{
bool b = [self NSStringContains:convert contains:@"Output"];
if (b ==true)
{
bool b = [self NSStringContains:convert contains:@"statecheck"];
if (b ==true)
{
....
}
}
}
2 Respuestas
6
En este caso, parece que necesita &&
:
if ([self NSStringContains:convert contains:@"Input"] &&
[self NSStringContains:convert contains:@"Output"] &&
[self NSStringContains:convert contains:@"statecheck"])
{
...
}
Por lo que vale, dado bool b;
, if (b==true)
siempre es redundante, solo use if (b)
.
contestado el 03 de mayo de 12 a las 20:05
¿Cómo codifico esto, cuando solo una condición de estas 3 declaraciones debe ser correcta? - John
@John: No estoy seguro de lo que estás preguntando. ¿Quieres decir que quieres algo como if (..."Input") xxx else if (..."Output) yyy else if (..."statecheck") zzz;
? - ataúd de jerry
2
Probablemente algo como esto:
bool hasInput = [self NSStringContains:convert contains:@"Input"];
bool hasOutput = [self NSStringContains:convert contains:@"Output"];
bool hasStatecheck = [self NSStringContains:convert contains:@"statecheck"];
if (hasInput && hasOutput && hasStatecheck)
{
}
Lo que está usando es, "si esta condición, entonces verifique esta condición y esta condición", etc. Puede juntarlos con un AND lógico, denotado por el &&
.
contestado el 03 de mayo de 12 a las 20:05
¿No es perder pasos? si el primero es falso, no necesita verificar los siguientes casos. Cuando la primera condición falla en (x && y && z), el resto no se verificará y se guardarán los dos pasos de las operaciones: Manchar
@ D3mon-1stVFW Eso es cierto, en ese tipo de rendimiento que se necesita, entonces la solución de Jerry es mejor. Escribiría el código para que sea legible primero. - vcsjones
Exactamente. Lo escribiría así antes, y en el caso inusual de que esto resulte ser un cuello de botella en el rendimiento, reescriba sin las variables. - Elland
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c logic conditional or haz tu propia pregunta.
Que es esto
NSStringContains:contains:
¿cosa? Ese es un nombre de método horrible; ¿Por qué no usar los métodos de cadena existentes directamente? - bbum