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

问题描述 投票:0回答:1

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

是否可以以这种方式为if语句中的数据库字段赋值实际更新其余if条件为真的所有记录?

database groovy scripting
1个回答
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"
© www.soinside.com 2019 - 2024. All rights reserved.