我是Groovy的新手。我执行以下Groovy代码:
myList=[234, 34, "Stackoverflow", 3.14]
myList=myList.collect {if (it instanceof Integer) it*it}
println myList
输出:
[54756, 1156, null, null]
在我看来,它不应该改变字符串值。当我将第二行更改为:
myList=myList.collect {if (it instanceof Integer) it*it else it=it}
它按预期工作:
[54756, 1156, Stackoverflow, 3.14]
我想知道背后的逻辑是什么!
答案 0 :(得分:3)
由于您的第一个版本中没有else
子句,因此null
就是结果。
第二个版本应该也是这样的:
myList.collect {if (it instanceof Integer) it * it else it}
答案 1 :(得分:1)
我想原因是因为你没有指定第一个闭包的结果,如果一个元素不是一个整数并且它默认为null
println a()
def a() {
if (1==2) "Hello!"
}
>> null