ทำในขณะที่เป็นเท็จ
ที่ทำงานวันนี้เพื่อนร่วมงานคนหนึ่งของฉันอธิบายถึงกรณีใช้งานให้ทำในขณะที่ (เป็นเท็จ) คนที่เขาคุยด้วยคิดว่านี่มันช่างงี่เง่าและเรียบง่ายถ้าข้อความจะดีกว่ามาก จากนั้นเราก็เสียเวลาครึ่งวันเพื่อพูดคุยถึงวิธีที่ดีที่สุดในการเขียนสิ่งที่เทียบเท่ากับ:
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);
นี่เป็นสำนวนที่พบในคค่อนข้างบ่อย โปรแกรมของคุณควรสร้างผลลัพธ์เดียวกันกับโค้ดหลอกด้านล่างขึ้นอยู่กับเงื่อนไข
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
ดังนั้นอินพุตอาจเป็น:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
และผลลัพธ์ควรเป็น:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
นี่คือ code-golf ดังนั้นคำตอบจะถูกตัดสินเป็นไบต์ ช่องโหว่มาตรฐานถูกแบน
ใช่นี่เป็นคำถามง่ายๆ แต่หวังว่าเราจะเห็นคำตอบที่สร้างสรรค์บางอย่างฉันหวังว่าความเรียบง่ายจะกระตุ้นให้ผู้คนใช้ภาษาที่พวกเขามั่นใจน้อยลง
return result
break
จากนั้นคุณจะได้รับโบนัสการใช้งานอีกครั้งและทำให้รหัสการโทรง่ายขึ้นเช่นกัน แต่บางทีฉันก็ขาดอะไรไป
goto
เพราะใช้goto
เป็นรูปแบบที่ไม่ดี :)
do{}while(false)
คือมาโครภายใน ง่ายif
ไม่พอเพียงเพราะมันมีปฏิสัมพันธ์ไม่ดีกับelse
รอบที่อาจมีอยู่ โดยไม่ต้องแมโครอาจรวมทั้งลบและdo
while