在Java中使用三元运算符应用增量

Spr*_*ing 6 java

是否可以在Java中使用三元运算符来应用增量?

例如,我想在没有"if"语句的情况下进行此操作,不是因为它更具可读性或更短,只是我想知道.

if(recordExists(recordId)){
   numberofRecords++;
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 16

是否可以在Java中使用三元运算符来应用增量?

您可以使用添加.

numberOfRecords += recordExists(recordId) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

恕我直言这没有副作用.

  • 我仍然会选择`if`声明:-) (3认同)

Jon*_*eet 6

是否可以在Java中使用三元运算符来应用增量?

那你可以写:

// Ick, ick, ick.
int ignored = recordExists() ? numberOfRecords++ : 0;
Run Code Online (Sandbox Code Playgroud)

或者进行无操作方法调用:

// Ick, ick, ick.
Math.abs(recordExists() ? numberOfRecords++ : 0);
Run Code Online (Sandbox Code Playgroud)

强烈反对你不这样做.这是对条件运算符的滥用.只需使用一份if声明.

条件运算符的目的是创建一个表达式,其值取决于条件.

if声明的目的是根据条件执行一些声明.

引用Eric Lippert与切向相关的C#博文:

表达式的目的是计算一个值,而不是引起副作用.声明的目的是产生副作用.

编辑:鉴于这个答案的有效性存在疑问:

public class Test {
    public static void main(String[] args) {
        boolean condition = true;
        int count = 0;
        int ignored = condition ? count++ : 0;
        System.out.println("After first check: " + count);
        Math.abs(condition ? count++ : 0);
        System.out.println("After second check: " + count);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

After first check: 1
After second check: 2
Run Code Online (Sandbox Code Playgroud)