Java 优雅的if编码方式(10<;x<;20)
Java中是否有一种优雅的编码方式:Java 优雅的if编码方式(10<;x<;20),java,Java,Java中是否有一种优雅的编码方式: if (10 < x < 20) { ... } if(10
if (10 < x < 20) {
...
}
if(10
i、 e.“如果x在10和20之间”
而不是必须写作
if ((x > 10) && (x < 20)) {
...
}
if((x>10)和&(x<20)){
...
}
谢谢 没有。
肯尼在评论中提到了这一点
if (10 < x && x < 20)
if(10
您希望使它们都小于或都大于;当你试图快速阅读时,颠倒比较的方向会使逻辑混乱。不,但你可以重新安排,使之更好,或者如果你感到不舒服,可以写一个包装:
if (InRange(x, 10, 20)) { ... }
或者,正如卡尔所说:
if (new Range(10, 20).contains(x)) { ... }
虽然就我个人而言,我不认为这有什么意义。这是一个无用的抽象概念。简单的布尔语句非常明显
不过,现在我想了想,根据卡尔下面的评论,有时候范围是一个完全有效和有用的抽象(例如,在处理提要时)。因此,根据x
的语义,可能您确实需要一个抽象。您唯一能做的就是松开额外的括号,因为&&
的优先级低于
和10&&x<20){
...
}
除此之外:没有捷径了。if(x<20)
if(x < 20)
{
if(x > 10)
{
//...
}
}
{
如果(x>10)
{
//...
}
}
或
if(x>10)
{
如果(x<20)
{
//...
}
}
最快的方法是开关
编辑:
编译成一个跳转表,而不是一长串的ifs。if(10
if(Math.abs(x-15)<5){
(我的意思是,整数溢出无关紧要)或新范围(10,20)。包含(x)
@Carl Manaster:是的,这将是hip-OO的方法。很好的调用。是的,让我们实例化一个新对象,而不是让我们漂亮的代码受制于&
表达式。hip-OO将创建对象作为参数传递,但不调用单个方法。+1有趣的是,先生,您赢得了一个Internet,您可以在自己身上找到它我想你需要解释一下你的意思,这在我看来非常优雅,只是没有一个速记/糖符号。
if (x > 10 && x < 20) {
...
}
if(x < 20)
{
if(x > 10)
{
//...
}
}
if(x > 10)
{
if(x < 20)
{
//...
}
}
switch(x) {
case 10:
case 11:
case 12:
case 13:
...
case 19: System.out.println("yes");
}