如何在groovy中允许0作为参数?

如何在groovy中允许0作为参数?,groovy,Groovy,下面是我试图运行的代码。这是我服务的一部分,正在从控制器调用该方法。现在,我想允许所有整数值>=0,并避免空值(当控制器只传递a或b的值时可能发生这种情况) 我想知道在groovy中是否有这样做的方法。我一直面临的问题是,当只传递1个值时,另一个值将更新为0,这是我不希望看到的。您只需将null与0分开;不要指望常规的真理 if (a != null && b != null && a >= 0 && b >= 0) { pri

下面是我试图运行的代码。这是我服务的一部分,正在从控制器调用该方法。现在,我想允许所有整数值>=0,并避免空值(当控制器只传递a或b的值时可能发生这种情况)


我想知道在groovy中是否有这样做的方法。我一直面临的问题是,当只传递1个值时,另一个值将更新为0,这是我不希望看到的。

您只需将null与0分开;不要指望常规的真理

if (a != null && b != null && a >= 0 && b >= 0) {
    println "OK"
} else {
    println "Bad arguments"
}
根据您的问题编辑和后续评论进行编辑:

  • 你的逻辑有点错误;将您的“| |”s更改为“&&”s。您希望'a>=0且a不为空'
  • 将输入类型更改为整数,以便它们实际上可以为null
  • 如果这两件事不能解决您的问题,则显示如何找到操作的参数

这是基于上面@Daniel建议的最后一段代码。在这里,只接受>=0的值。同时,空值将被忽略。

“我想允许所有整数值>=0并避免空值”-您不能完全这样做吗?例如,
如果(a>=0&&a!=null)
@OliverCharlesworth:不,这不起作用。因为即使只传递了一个参数值,另一个参数值也设置为0,这是我不想要的。我将更新问题以澄清我自己,我不确定我是否理解。这()似乎是你想要的行为,我想?@OliverCharlesworth:我已经更新了我的问题。很抱歉,我仍然没有看到问题。对于上面的代码片段,你能解释一下你期望的是什么行为,以及你实际观察到的行为吗?(或者更好的是,构造一个说明问题的例子。)grails中是否有强制控制器传递这两个值的方法。如果这样做了,那么这是您的控制器调用此代码,还是这是您的控制器操作?还要注意,int与Integer不完全相同,不能真正为null;如果要强式键入参数,您可能需要指定Integer。这是一个控制器操作非常感谢,将输入类型更改为整数完成了任务。而且“| 124;”而不是“&&”是一个输入错误。感谢快速解析更改为整数后,只有>=0就足够了,因为!=null现在是多余的
if (a != null && b != null && a >= 0 && b >= 0) {
    println "OK"
} else {
    println "Bad arguments"
}
int x = 10
int y = 10
boolean doSomething(Integer a, Integer b) {
    String logger = ""
    if(a >= 0) {
        x = a
        logger += "Value of x is ${x}. "
    }
    if(b >= 0) {
        y = b
        logger += "Value of y is ${y}. "
    }
    if(logger) {
        log.info logger
        return true
    }
    log.error "values not found"
    return false
}