繁体   English   中英

三元运算符如何工作

[英]How does the ternary operator work

我不明白这段代码;

有人可以写得正确,所以我也可以理解。

public void deleteStudentsPersistence(Student student) {
        em.remove(em.contains(student) ? student : em.merge(student));
    } 

您在那里使用的运算符称为三元运算符,它的工作方式与if-else语句的工作方式几乎相同。 请考虑以下声明:

int min = (a < b) ? a : b;

这意味着: 评估(a < b)的值,如果为真,则min的值为a ,否则min的值为b 它可以通过这种方式与if-else语句相关: 如果(a <b)为真:min = a; 否则:min是b。

现在回到你的问题....

em.remove(em.contains(student) ? student : em.merge(student));

这意味着如果em.contains(student)为true,则执行em.remove(student) ,但如果它为false,则执行em.remove(em.merge(student))

PS:

显然,在许多实际情况中,涉及根据双向条件给变量赋值,这可能是if语句的微妙替代。 有关于“更有效”的方法看到巨大争论这个职位 ,但我个人更喜欢使用三元运算符,因为它是相对较短的语法长度和可读性。

我希望这有帮助..快乐编码!

这是一个三元运算符,称为条件运算符。 它也可以这样写:

public void deleteStudentsPersistence(Student student) {
        if (em.contains(student)){
        em.remove(student);
        } else{
        em.remove(em.merge(student));
        }
    } 

基本上,它会在删除之前检查em是否包含学生,否则将其合并

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM