可以为Groovy中的if语句中的字段赋值可以使数据库更新记录

时间:2017-12-19 19:56:24

标签: database groovy scripting

我有一个简单的在线界面,用于编写Groovy脚本,并将其合并到更大的软件中。我在VB6中的项目和Groovy中的另一个项目之间蹦蹦跳跳,因此意外地使用了一个等号(VB6为if语句执行),我想在Groovy中使用double-equals。

如果以这种方式为if语句中的数据库字段赋值,实际上会更新其余if条件为真的所有记录吗?

1 个答案:

答案 0 :(得分:1)

Java的赋值运算符将返回刚分配的变量。如果这是在一个期望布尔值的语句中,它将根据Groovy的真实性进行评估。我们可以在Groovy控制台中看到一些断言:

groovy:000> assert (foo = 1)
===> null
groovy:000> assert (foo = 0)
ERROR org.codehaus.groovy.runtime.powerassert.PowerAssertionError:
assert (foo = 0)
            |
            0

或使用if声明:

groovy:000> if ((foo = 'bar')) {
groovy:001>   println "Assignment was true!"
groovy:002> }
Assignment was true!

请注意,您需要使用双括号来“工作”,因为没有它们,您将在尝试解析它时遇到编译错误:

groovy:000> if (foo = 'bar') {
groovy:001>   println "Assignment was true!"
groovysh_parse: 2: expecting ')', found '=' @ line 2, column 9.
   if (foo = 'bar') {
           ^

它可能非常阴险。它有一些用例,就像一个while循环迭代一个方法的返回值,直到它返回false:

while (data = getData()) {
    doWork(data)
}
println "Done with all the data"