2017-07-27 121 views
0

我是groovy/grails新手。要问的是什么样的区别: “?”如何向控制器发送参数

String x = params?.var1 

String x=params.var1 

我们为什么使用在控制器?

+3

的可能的复制[?什么是问号运营商红宝石的意思(https://stackoverflow.com/questions/1345843/what-does-the-question- mark-operator-mean-in-ruby) – moritzg

回答

0

?叫做安全导航运营商在Groovy。这意味着它会默默地捕获NullPointerException,如果它发生并返回null。例如:

Map params = null 
String x = params?.var1 // assigns null to variable x 
String y = params.var1 // throws NullPointerException because params is null 

,如果你认为特定的变量可以是一个null,你不想检查,如果它的每一次不为空这是非常有用的。在这种情况下,您使用安全的导航运算符,并且您接受链接调用的结果可能会返回null

参考:http://groovy-lang.org/operators.html#_safe_navigation_operator

+0

谢谢你这么多@Szymon –

+0

我很高兴我能帮你:) –