[英]Groovy each method returning incorrect results
用一些Groovy代码编写了这一行
def intCurrentArray = currentVersion.tokenize('.').each({x -> Integer.parseInt(x)})
它解析格式为版本号XX.XX.XX.XX的字符串,并将结果字符串列表转换为整数列表。 但是,Groovy推断intCurrentArray而是一个字符串列表,从而导致错误的转换。 当我将行更改为:
ArrayList intCurrentArray = []
for (x in currentVersion.tokenize('.'))
intCurrentArray.add(Integer.parseInt(x))
转换效果很好。 为什么每种方法都能给出时髦的结果? Groovy不会在闭包内部查找以帮助推断intCurrentArray的类型吗?
each
返回迭代的相同列表。 使用collect
代替根据作为参数传递的闭包的每个结果构建一个新列表:
def intCurrentArray = "99.88.77.66".tokenize('.').collect { it.toInteger() }
assert intCurrentArray == [99, 88, 77, 66]
或点差运算符:
def intCurrentArray = "99.88.77.66".tokenize('.')*.toInteger()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.