如何通过比较同一行上的三个变量来返回布尔值?

Posted

技术标签:

【中文标题】如何通过比较同一行上的三个变量来返回布尔值?【英文标题】:How do you return a boolean by comparing three variables on the same line? 【发布时间】:2018-10-18 03:44:52 【问题描述】:

我见过有人使用

仅在 1 行上执行 if 和 else 语句

return var1 != null ? var2 : 0;.

这似乎比写一个 if 语句然后再写几行等等更紧凑和更快捷......

上面的 return 语句是一个示例,我无法重新创建类似的东西,因为我不知道在 return 行上使用 if and else 语句的语法。


目前的情况:

有3个整数。

我想比较 if var 1 是否大于 var 2 和 (&&) if (var 1 + var 3) 是否大于 var 2 。 如果这些条件为真,则返回语句应返回假,否则为真。

尝试:

return var1 > var2 && (var1 + var3) > var2 ? false : true;

【问题讨论】:

旁白:你永远不应该写condition ? false : true!condition更简单。 @Eran 是的,完全正确,感谢您的更正,也更新了线程。 【参考方案1】:

“如果var1大于var2”是这个条件:

var1 > var2

“如果var1 + var3大于var2”是这个条件:

var1 + var3 > var2

如果这两个条件都匹配,则返回 false,否则返回 true:

return !(var1 > var2 && var1 + var3 > var2);

或者,您可以否定个别条件,这给出:

return (var1 <= var2 || var1 + var3 <= var2);

(只要你的数字都不是 NaN,就等价。)

不需要?: 运算符。

【讨论】:

【参考方案2】:

不是

return !(var1 > var2 && (var1 + var3) > var2);

够了吗?

使用布尔代数,我们可以简化! 运算符:!(a and b) = !a or !b

return var1 <= var2 || (var 1 + var 3) <= var2;

【讨论】:

【参考方案3】:

您可以输入:

return !(var1 > var2 && (var1 + var3) > var2);

【讨论】:

@Mike 这始终是开发人员的选择。如果 OP 想要一个单行,也许这比可读性更重要……这变成了风格或意见的问题。

以上是关于如何通过比较同一行上的三个变量来返回布尔值?的主要内容,如果未能解决你的问题,请参考以下文章

在js 中怎样声明一个布尔值变量,使其经过多次验证,最后返回这个布尔

如何在java中返回四分之三布尔值的答案

如何从 Javascript 中的连续函数返回布尔值?

没有在布尔函数中获取/设置正确的返回值

VB中布尔型变量如何赋值?

(14)awk布尔值比较和逻辑运算