加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy – 仅在if语句中的变量不为null时才测试

发布时间:2020-12-14 16:30:26 所属栏目:大数据 来源:网络整理
导读:我有以下方法,我只想测试event.status属性,只有当状态已经传入: def findEvent(String desc,String status = null,Collection events) { return events.find { it.description == desc If status is not null: it.status == status } throw new Exception
我有以下方法,我只想测试event.status属性,只有当状态已经传入:

def findEvent(String desc,String status = null,Collection events) {
        return events.find {
            it.description == desc && If status is not null: it.status == status
        }

        throw new Exception("Review Event Record Not Found: ${desc}")
}

我以为可以这样做,但似乎不起作用:

def findEvent(String desc,Collection events) {
        return events.find {
            it.description == desc && (status != null ?: {it.status == status})
        }

        throw new Exception("Review Event Record Not Found: ${desc}")
}

有什么办法可以做到吗?或者我必须回到这样的事情:

if (status != null) {
    return events.find {
        it.description == desc && it.status == status
    }
} else if (status == null) {
    return events.find {
        it.description == desc
    }
}

有没有一些最佳做法?

解决方法

我不相信这个表情是感性的.

猫王意思是“如果真实,使用价值,否则使用这个其他的东西”.

你的“其他事情”是一个关闭,值是status!= null,这两个都不是你想要的.如果状态为空,则Elvis说.如果不是,你会得到一个额外的关闭.

为什么你不能使用:

(it.description == desc) && ((status == null) || (it.status == status))

即使这样不行,所有你需要的是关闭来返回适当的价值,对吧?没有必要创建两个单独的查找调用,只需使用一个中间变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读