我有一个简单的在线界面,用于编写Groovy脚本,并将其合并到更大的软件中。我在VB6中的项目和Groovy中的另一个项目之间蹦蹦跳跳,因此意外地使用了一个等号(VB6为if语句执行),我想在Groovy中使用double-equals。
如果以这种方式为if语句中的数据库字段赋值,实际上会更新其余if条件为真的所有记录吗?
答案 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"