我正在开展一个项目,我正在使用Intellij IDEA。在我写作的时候,我收到了一条通知,说明我的if语句可以简化了。 (请注意,我还不熟悉编码)
它说:
报告if语句可以简化为单个赋值还是返回语句。 例如:
if (foo()) {
return true;
} else {
return false;
}
可以简化为
return foo();
这是如何工作的? 假设foo()是数字4,这不会只返回4而不是真的吗?我误解了什么?
修改
这是我写的代码:
if (row > 0 && row < 4 && col > 0 && col < 4) {
return false;
} else {
return true;
}
可以简化为:
return !(row > 0 && row < 4 && col > 0 && col < 4);
我只是不明白这是如何简化的。
答案 0 :(得分:6)
(row > 0 && row < 4 && col > 0 && col < 4)
本身就是一个布尔值(真或假)。
我们可以将boolean && boolean && boolean && boolean
分解为<
和>
运算符返回布尔值。同样,布尔值和布尔值是布尔值,因此整个表达式是布尔值,可以这样返回。
您可以这样考虑:
true
或false
。因此布尔。&&
,||
或!
,您可以问自己:&#34;如果a和b是陈述(真或假),那么&#34; a和b都是真的&#34;是真还是假。同样适用于&#34;或&#34;,或&#34; a不是真的&#34;。结果是真实的。现在您可以查看if,并将其读作&#34;如果 foo 为true,则返回false。否则,返回true&#34;。这明显简化为&#34;返回 foo &#34;或者,&#34;不返回 foo &#34;。
答案 1 :(得分:1)
对于要编译的if语句,括号之间的条件必须是布尔值。
所以,如果你可以把方法foo作为if的条件,它会返回一个布尔值。
因此,你可以写:
return foo();
在您的特定情况下,表达式!(row > 0 && row < 4 && col > 0 && col < 4)
的计算结果为true或false,因此您可以写:
return !(row > 0 && row < 4 && col > 0 && col < 4);
答案 2 :(得分:1)
您的Foo()方法返回一个布尔值,因此它将为true或false。因此,您不需要通过添加if语句来检查true或false来添加冗余,然后返回true或false。
答案 3 :(得分:0)
我有类似你的代码:
if (other.getClassAbbr().equals(this.getClassAbbr())
&& other.getInstance().equals(this.getInstance())) {
return true;
}
return false;
在考虑之后,我接受了这样的建议: 'if'语句可以简化
然后将代码更改为:
return other.getClassAbbr().equals(this.getClassAbbr())
&& other.getInstance().equals(this.getInstance());
是的,代码变得干净。