condición de hacer mientras sin declarar una variable separada
-
27-10-2019 - |
Pregunta
Tengo un bucle do- while dentro de una función que se parece a esto:
do
{
// a bunch of stuff
if (something < something else)
{
return true;
}
else if (stuff > other stuff)
{
if (something != other stuff)
{
return false;
}
else
{
return true;
}
}
} while (condition);
Mi problema aquí es con el condition
al final.La única forma en que puedo realizar un seguimiento de esto sería declarar una variable booleana antes del ciclo y establecer su valor para que coincida con el return
valorar y tener la while()
verifique eso después de cada iteración.Si bien esto funcionaría, me parece bastante poco elegante y me preguntaba si había alguna manera de tener el while()
aprovechar el return
valor en su lugar.
Solución
Suponiendo que su código es incorrecto debido a que intentó parafrasearlo, esto es lo que debe hacer para satisfacer sus necesidades de que la devolución sea la misma que la while();
Para otros, este código a continuación tiene una lógica incorrecta, pero estoy tratando de mantenerlo en el pseudocódigo similar que utilizó.Básicamente, si desea que el while imite el valor de retorno, necesita el !
de la devolución para que la condición salga.
do
{
// a bunch of stuff
if (something < something else)
{
return !condition;
}
else if (stuff > other stuff)
{
if (something != other stuff)
{
return condition;
}
else
{
return !condition;
}
}
} while (condition);
Otros consejos
No está claro cómo se ve su condición.De todos modos, probablemente quieras un bucle infinito:
for (; ;) {
… your code here …
}
o:
while (true) {
… your code here …
}
Este bucle nunca se detendrá por sí solo... pero como lo sales usando return
esto no es un problema.
Podrías simplemente decir
do
{
// a bunch of stuff
if (something < something else)
{
return true;
}
else if (stuff > other stuff)
{
if (something != other stuff)
{
return false;
}
else
{
return true;
}
}
else if(exit_condition)
break;
} while (1);