如果我说了些愚蠢的话,因为我对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
}
这里有一些问题,包括返回空值和检查空值,我希望能够解决。我可以尝试:
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,所以这可能是我无法修复的问题。但我仍然希望使逻辑尽可能简单,并避免检查null。