[英]Closure in Groovy
我是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]
我想知道背后的逻辑是什么!
由于您的第一个版本中没有else
子句,因此结果为null
。
第二个版本也应该这样工作:
myList.collect {if (it instanceof Integer) it * it else it}
我想原因是因为你没有指定第一个闭包的结果,以防一个元素不是一个整数并且它默认为null
println a()
def a() {
if (1==2) "Hello!"
}
>> null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.