簡體   English   中英

Groovy每個方法返回錯誤的結果

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM