现象的名称:if if else

时间:2015-07-25 08:37:11

标签: if-statement

上周,我听到了关于if-Statements的一些现象。它有一个特定的名称,但我不记得了。

问题是关于if-if-else结构,例如:

if( a!=null )
if( a.isTrue() )
    a.performAction(); 
else
    a.healCondition(); // second chance to do something

所以问题来自缺少括号。如果我使用括号作为外部if,这不会是一个问题。 没有括号,并不总是清楚“if”属于哪个“if”。

但我不想为这个问题找到解决方案。我很高兴知道如何调用这种模式。

感谢您的帮助

2 个答案:

答案 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();
  }
}