2017-07-24 61 views
0

我有一個不一定是字符串的對象列表,我想返回已被大寫的字符串列表。Groovy collect()關閉不起作用來大寫字符串

目前,我這樣做:

// Input : ["foo", "bar"] (not actually strings) 
// Expected Output : ["Foo", "Bar"] 
// Actual Output : ["foo", "bar"] 

// Code: 
list.collect { it.toString().capitalize() } 

可能是什麼問題?如果我打印出每個元素,然後收集它打印出正確的值,但最終的列表是錯誤的。

回答

3

collect不發生變異原始列表,但返回一個新問題:

def oringinal = ["foo", "bar"] 
def capitalized = original.collect { it.capitalize() } 
println(capitalized) // ["Foo", "Bar"] 

PS:您還可以使用*.傳播點運算符,像這樣:

def capitalized = original*.capitalize() 
1

您懷疑.collect()方法變異輸入列表,但它 - 它創建的列表的副本,並不會改變輸入列表中任何東西。

def list = ["foo", "bar"] 

def newList = list.collect { it.toString().capitalize() } 

assert list != newList 

assert newList == ["Foo", "Bar"]