我开始学习Groovy,我来到这个例子:
message = 'Hello' + userService.getLoggedInUser()?.firstName ?: 'Anonymous'
message += '!'
当Hello Anonymous
方法返回getLoggedInUser
时,我们希望该邮件的值为null
。但是,通过上面的示例,当方法返回空值时,message
的值为Hello null
。
此示例有效:
message = 'Hello'
message += userService.getLoggedInUser()?.firstName ?: 'Anonymous'
message += '!
为什么第一个例子不起作用?
答案 0 :(得分:2)
这是因为operator precedence(第一个点,然后是+
,然后是?:
)
这将有效:
message = 'Hello' + (userService.getLoggedInUser()?.firstName ?: 'Anonymous')
message += '!'
或者更好地使用GString:s而不是concating:
message = "Hello ${userService.getLoggedInUser()?.firstName ?: 'Anonymous'}!"