【发布时间】:2016-06-26 21:34:50
【问题描述】:
我有以下用户类:
class User {
String username
Set<Role> roles
}
在应用程序中,我调用SecurityUtils.getUser() 来获取当前登录的用户。如果用户已登录,则此方法返回有效的 User 实例,如果用户未验证/匿名,则返回 null:
User user = SecurityUtils.getUser()
我正在尝试编写一个方法,我需要确定用户是否登录,如果他们登录了,如果他们的Roles 集为空或null,我需要做一些特殊的事情:
if(user && !user.roles) {
// Do something special
}
我想做这个 Groovier,所以我尝试了:
if(!user?.roles) {
// Do something special
}
这是行不通的。同样,// Do something special 应该仅在以下情况下执行:
-
user不为空(已验证);和 ( - 有一组为空的
Roles;或 - 有一组
Roles是空的)
有什么想法吗?
【问题讨论】:
-
是什么让你相信
user && !user.roles不时髦? -
这样使用。无论你想出什么“聪明”的东西,都比
user && !user.roles可读性差。让我们假设!user?.roles有效。一般开发人员需要多长时间才能理解这种情况的意图? -
大声笑——这一定是历史上第一次 Groovy 人推荐使用更重的语法!
-
@smeeb Groovy 的目的不是让每个句子都尽可能小。
标签: groovy