[英]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.