groovy学习笔记之第一篇

productId = product?.productId ?: optProductId ?: request.getAttribute("productId");

 因为groovy是跟java类似的,所以初看这个语句就觉得跟java的三元运算符"?:"很像,但是不知道这个语句的判  断条件是什么,后来实验了一下,发现这个语句是这样,有三个变量:

produc?.productId
optProductId
request.getAttribute("productId")

  如果三者只有一个变量有值,那么前面定义的productId的值就是该变量的值,如果有多个变量有值,取最前面有值变量的值。

  再来说说第一个变量中的"?"作用,其实这个符号跟ftl中的"??" 都是判断非空,这里这个非空的意思是变量不为null,如果为null程序还是会继续执行不报空指针错误。

开始我是理解为,如果不定义变量然后使用这个操作符也会起作用,后来发现是只有为null时,这个操作符才会发挥作用。

关于groovy的操作符的详细介绍可以看看这个博客:grovvy语言规范值操作符

猜你喜欢

转载自201610222643.iteye.com/blog/2393453