做错事
今天在工作中,我的一位同事正在描述do while(false)的用例。他正在与之交谈的人认为这很愚蠢,而且如果陈述会更好,那就简单了。然后,我们浪费了一半的时间来讨论编写等同于以下内容的最佳方式:
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"
这是代码高尔夫球,因此答案将以字节为单位。禁止出现标准漏洞。
是的,这很简单,但是希望我们能看到一些创造性的答案,我希望这种简单性会鼓励人们使用他们不太自信的语言。
return result
代替的方法来完成同一件事break
。然后,您还将获得可重用性和简化调用代码的好处。但是也许我想念一些东西。
goto
因为使用goto
格式错误:)
do{}while(false)
是在内部宏中。一个简单的条件if
是不够的,因为它与else
s之间可能存在的相互作用很差。如果没有宏,则最好删除do
和while
。