上周,我听到了关于if-Statements的一些现象。它有一个特定的名称,但我不记得了。
问题是关于if-if-else结构,例如:
if( a!=null )
if( a.isTrue() )
a.performAction();
else
a.healCondition(); // second chance to do something
所以问题来自缺少括号。如果我使用括号作为外部if,这不会是一个问题。 没有括号,并不总是清楚“if”属于哪个“if”。
但我不想为这个问题找到解决方案。我很高兴知道如何调用这种模式。
感谢您的帮助
答案 0 :(得分:2)
歧义被称为dangling else,它的解决方式取决于语言。例如,Java具有将else
与内部if
相关联的语法规则。
答案 1 :(得分:0)
这看起来像Java,但我所说的几乎适用于所有"括号内的#34;语言。
当你不想使用括号时,你应该尽量不要使用multiline if语句。
在这种情况下,您不想写:
if(a!=null) if(a.isTrue()) a.performAction(); else a.healCondition();
它太丑了,所以你把它分成多行。一旦你这样做,你应该添加括号。不适用于编译器(在这种情况下不需要它们),但对于其他程序员和你自己:
if(a!=null)
{
if(a.isTrue()) a.performAction();
else a.healCondidiont();
}
或
if(a!=null)
{
if(a.isTrue())
{
a.performAction();
}
else
{
a.healCondidiont();
}
}