首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化语句

简化语句
EN

Stack Overflow用户
提问于 2014-04-17 20:59:22
回答 3查看 3.3K关注 0票数 1

我正在做一个项目,我正在使用Intellij。在我写作的时候,我收到通知说我的if-语句可以简化。(请注意,我对编码还不熟悉)

上面写着:

报告可以简化为单个赋值或返回语句的if语句。例如:

代码语言:javascript
复制
if (foo()) {
   return true;
} else {
   return false;
}

可以简化为

代码语言:javascript
复制
return foo();

这是怎么回事?假设foo()是数字4,这不是只返回4而不是true吗?我误会什么了?

编辑

下面是我正在编写的代码:

代码语言:javascript
复制
if (row > 0 && row < 4 && col > 0 && col < 4) {
    return false;
} else {
    return true;
}

它可以简化为:

代码语言:javascript
复制
return !(row > 0 && row < 4 && col > 0 && col < 4);

我只是不明白这是怎么简化的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-17 21:03:56

(row > 0 && row < 4 && col > 0 && col < 4)本身就是一个布尔值(真或假)。

我们可以将其分解为boolean && boolean && boolean && boolean,因为<>运算符返回布尔值。同样,布尔值和布尔值都是布尔值,因此整个表达式都是布尔表达式,因此可以这样返回。

你可以这样想:

  • 对于行,您有一个数字,因此您可以说“多少”或“哪个数字”。列也是一样。
  • 对于比较,你可以问:如果x和y是数字,那么x< y?答案可能是truefalse。因此是布尔型。
  • 对于&&||!,您可以问自己:“如果a和b是语句(真或假),那么"a和b都是真”或“是假的。”或"a不是真“。结果是正确的和错误的。

现在您可以查看if,并将其读为“如果foo为true,则返回false,否则,返回true”。这显然简化为“返回与foo相反的”或“返回非foo”。

票数 6
EN

Stack Overflow用户

发布于 2014-04-17 21:01:25

要编译if语句,括号之间的条件必须是布尔值。

因此,如果您可以将foo方法作为if的条件,这是因为它返回一个布尔值。

因此,你可以写:

代码语言:javascript
复制
return foo(); 

在特定情况下,表达式!(row > 0 && row < 4 && col > 0 && col < 4)计算为true或false,因此您可以编写:

代码语言:javascript
复制
return !(row > 0 && row < 4 && col > 0 && col < 4);
票数 1
EN

Stack Overflow用户

发布于 2014-04-17 21:02:35

Foo()方法返回一个布尔值,因此它将为true或false。因此,不需要通过添加if语句来检查是否为true或false,从而添加冗余,然后返回true或false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23143344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档