Fallo finto
Oggi al lavoro uno dei miei colleghi stava descrivendo il caso d'uso per do while (false). La persona con cui stava parlando pensava che fosse sciocco e che le semplici affermazioni sarebbero state molto migliori. Abbiamo quindi continuato a perdere metà della nostra giornata discutendo il modo migliore per scrivere qualcosa di equivalente a:
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);
Questo è un linguaggio che si trova in c abbastanza spesso. Il tuo programma dovrebbe produrre lo stesso output del pseudo-codice sottostante in base alle condizioni.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Pertanto, l'input potrebbe essere:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
e l'output dovrebbe essere:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Questo è code-golf, quindi le risposte saranno giudicate in base ai byte. Le scappatoie standard sono vietate.
Sì, questo è semplice, ma speriamo di vedere alcune risposte creative, spero che la semplicità incoraggi le persone a usare le lingue con cui sono meno fiduciosi.
return resultposto di break. Quindi ottieni i bonus di riusabilità e anche di semplificare il codice chiamante. Ma forse mi manca qualcosa.
gotoperché usare gotoè una cattiva forma :)
do{}while(false)è all'interno di macro. Un semplice ifnon è sufficiente, perché interagisce male con i elses che potrebbero essere presenti. Senza una macro puoi anche rimuovere il doe while.