优雅的编码方式(10 <x <20)

Dan*_*ing 2 java

Java中是否有一种优雅的编码方式:

if (10 < x < 20) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

即"如果x在10到20之间"

而不是必须写

if ((x > 10) && (x < 20)) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

mch*_*mch 14

不.<操作员总是比较两个项目并产生一个布尔值,因此您不能"优雅地"链接它们.你可以这样做:

if (10 < x && x < 20)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)


Dea*_*n J 5

肯尼在评论中钉了它.

if (10 < x && x < 20)
Run Code Online (Sandbox Code Playgroud)

你想让它们保持低于或低于两者; 当你试图快速阅读时,反转比较的方向会产生令人困惑的逻辑.


i_a*_*orf 5

不,但是你可以重新安排它以使它更好,或者如果它让你烦恼的话写一个包装:

if (InRange(x, 10, 20)) { ... }
Run Code Online (Sandbox Code Playgroud)

或者,正如卡尔所说:

if (new Range(10, 20).contains(x)) { ... }
Run Code Online (Sandbox Code Playgroud)

虽然个人而言,但我没有看到这一点.这是一个无用的抽象.裸布尔语句非常明显.

虽然,现在我想到了它,并且根据下面的Carl的评论,有时候Range是一个完全有效和有用的抽象(例如在处理Feeds时).所以,根据语义x,也许你确实需要一个抽象.

  • 或者`new range(10,20).contains(x)`. (3认同)