Groovy 空值检查/返回
Posted
技术标签:
【中文标题】Groovy 空值检查/返回【英文标题】:Groovy null checking/returning 【发布时间】:2014-04-27 07:53:37 【问题描述】:我对 groovy 还很陌生,所以如果我说了一些愚蠢的话,我提前道歉,但我想找到一种更有效的方法来做到这一点。
在我们的控制器中,我们有以下逻辑:
def getExampleInstance()
if(params.id?.toString()?.isNumber())
return Examplet.get(params.id)
else if(params.id != null)
return params.id.toLowerCase() == 'key' ? Example.findByIdIsNotNull() : Example.findByattributeIlike(params.id)
return null
这有几个问题,包括返回 null 和检查我想摆脱的 null。我可以试试:
def getExampleInstance()
if(params.id?.toString()?.isNumber())
return Example.get(params.id)
else if(params.id?.toLowerCase() == 'key')
return Example.findByIdIsNotNull()
//more logic here
return null
但是我最终会得到一个更复杂的逻辑,并且可能仍然检查/返回 null 以便在最后实现 findByIlike。
此方法的合同允许返回 null,因此这可能是我无法解决的问题。但我仍然想让逻辑尽可能简单,避免检查空值。
【问题讨论】:
【参考方案1】:不确定 100% 你在追求什么,但另一种方法可能是尝试 Groovy switch 语句?
def getExampleInstance()
switch( params.id )
// Is it an integer, or a string representation of an integer?
case Integer:
case ~/[0-9]+/:
return Example.get( "$params.id".toInteger() )
// Is it the word "key"?
case 'key':
return Example.findByIdIsNotNull()
// Is it null?
case null:
println "params.id was null"
break
// Otherwise, it's something else
default:
println "No idea how to handle $params.id"
【讨论】:
谢谢!这看起来更干净,可以完成工作!以上是关于Groovy 空值检查/返回的主要内容,如果未能解决你的问题,请参考以下文章