[英]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.