Lakukan Saat Salah
Di tempat kerja hari ini salah seorang rekan saya menggambarkan use case untuk do while (false). Orang yang diajaknya bicara berpikir bahwa ini konyol dan sesederhana itu jika pernyataan akan jauh lebih baik. Kami kemudian menghabiskan setengah hari kami untuk membahas cara terbaik untuk menulis sesuatu yang setara dengan:
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);
Ini adalah ungkapan yang sering ditemukan di c. Program Anda harus menghasilkan output yang sama dengan pseudo-code di bawah ini tergantung pada kondisinya.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Karena itu inputnya bisa:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
dan hasilnya harus:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Ini adalah kode-golf sehingga jawaban akan dinilai berdasarkan byte. Celah standar dilarang.
Ya ini sederhana, tapi semoga kita akan melihat beberapa jawaban kreatif, saya berharap kesederhanaan akan mendorong orang untuk menggunakan bahasa yang kurang mereka percayai.
return result
menggantikan break
. Kemudian Anda mendapatkan bonus kegunaan ulang dan menyederhanakan kode panggilan juga. Tapi mungkin aku kehilangan sesuatu.
goto
karena menggunakan goto
bentuk yang buruk :)
do{}while(false)
adalah di dalam makro. Sederhana if
tidak cukup, karena berinteraksi buruk dengan else
sekitar yang mungkin ada. Tanpa makro Anda juga dapat menghapus do
dan while
.