Faire tandis que faux
Au travail aujourd'hui, un de mes collègues décrivait le cas d'utilisation de do while (false). La personne à qui il parlait a pensé que c'était ridicule et aussi simple que de simples déclarations. Nous avons ensuite passé la moitié de notre journée à discuter de la meilleure façon d’écrire quelque chose d’équivalent à:
do
{
//some code that should always execute...
if ( condition )
{
//do some stuff
break;
}
//some code that should execute if condition is not true
if ( condition2 )
{
//do some more stuff
break;
}
//further code that should not execute if condition or condition2 are true
}
while(false);
C’est un idiome qui se trouve assez souvent dans c. Votre programme devrait produire le même résultat que le pseudo-code ci-dessous en fonction des conditions.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Par conséquent, l'entrée pourrait être:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
et le résultat devrait être:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
C'est du code-golf, donc les réponses seront jugées sur des octets. Les échappatoires standard sont interdites.
Oui, c’est simple, mais j'espère que nous trouverons des réponses créatives. J'espère que la simplicité encouragera les gens à utiliser des langues avec lesquelles ils ont moins confiance.
return resultà la place de break. Ensuite, vous bénéficiez des bonus de réutilisation et de simplification du code d'appel. Mais peut-être que je manque quelque chose.
gotoutiliser parce que leur gotoforme est mauvaise :)
do{}while(false)est dans les macros. Un simple ifne suffit pas, car il interagit mal avec des elseobjets potentiellement présents. Sans macro, vous pouvez également supprimer le doet while.