Mer*_*cel 2 java ternary-operator
我不懂这段代码;
有人可以适当地写它,这样我也可以理解。
public void deleteStudentsPersistence(Student student) {
em.remove(em.contains(student) ? student : em.merge(student));
}
Run Code Online (Sandbox Code Playgroud)
您在此处使用的运算符称为三元运算符,其工作原理与if-else语句的工作原理几乎相同。考虑以下语句:
int min = (a < b) ? a : b;
Run Code Online (Sandbox Code Playgroud)
这意味着:评估的值(a < b),如果为true,则min的值为a,否则,min的值为b。它可以通过以下方式与if-else语句相关:if(a <b)为true:min = a; 否则:min为b。
现在回到您的问题。
em.remove(em.contains(student) ? student : em.merge(student));
Run Code Online (Sandbox Code Playgroud)
这意味着,如果em.contains(student)为true,则执行em.remove(student);但是,如果为false,则执行em.remove(em.merge(student))。
PS:
显然,在许多涉及基于双向条件给变量赋值的实际情况下,这可能是if语句的微妙替代。有关于“更有效”的方法看到巨大争论这个职位,但我个人更喜欢使用三元运算符,因为它是相对较短的语法长度和可读性。
希望对您有所帮助。