我正在做一个项目,我正在使用Intellij。在我写作的时候,我收到通知说我的if-语句可以简化。(请注意,我对编码还不熟悉)
上面写着:
报告可以简化为单个赋值或返回语句的if语句。例如:
if (foo()) {
return true;
} else {
return false;
}可以简化为
return foo();这是怎么回事?假设foo()是数字4,这不是只返回4而不是true吗?我误会什么了?
编辑
下面是我正在编写的代码:
if (row > 0 && row < 4 && col > 0 && col < 4) {
return false;
} else {
return true;
}它可以简化为:
return !(row > 0 && row < 4 && col > 0 && col < 4);我只是不明白这是怎么简化的。
发布于 2014-04-17 21:03:56
(row > 0 && row < 4 && col > 0 && col < 4)本身就是一个布尔值(真或假)。
我们可以将其分解为boolean && boolean && boolean && boolean,因为<和>运算符返回布尔值。同样,布尔值和布尔值都是布尔值,因此整个表达式都是布尔表达式,因此可以这样返回。
你可以这样想:
true或false。因此是布尔型。&&、||或!,您可以问自己:“如果a和b是语句(真或假),那么"a和b都是真”或“是假的。”或"a不是真“。结果是正确的和错误的。现在您可以查看if,并将其读为“如果foo为true,则返回false,否则,返回true”。这显然简化为“返回与foo相反的”或“返回非foo”。
发布于 2014-04-17 21:01:25
要编译if语句,括号之间的条件必须是布尔值。
因此,如果您可以将foo方法作为if的条件,这是因为它返回一个布尔值。
因此,你可以写:
return foo(); 在特定情况下,表达式!(row > 0 && row < 4 && col > 0 && col < 4)计算为true或false,因此您可以编写:
return !(row > 0 && row < 4 && col > 0 && col < 4);发布于 2014-04-17 21:02:35
Foo()方法返回一个布尔值,因此它将为true或false。因此,不需要通过添加if语句来检查是否为true或false,从而添加冗余,然后返回true或false。
https://stackoverflow.com/questions/23143344
复制相似问题