2017-09-15 21 views
0

假設我有在Groovy代碼列表如下:將元素添加到列表中的Groovy

l = [1,2,3,4] 

現在,當我使用下面的代碼,它改變了列表:

println(l<<5) 

現在我們的名單是[1,2,3,4,5]

但是,當我使用此代碼:

println(l+[6]) 

列表中沒有任何事情發生(除了打印結尾處爲6) 但是該列表與[1,2,3,4,5]相同

這是怎麼回事?請幫助。 由於

+6

'<<'將一個項目追加到列表(修改原始列表),而'+'從兩個列表中創建一個新列表(不修改原始列表中的任何一個) – UnholySheep

+0

要添加到@ UnholySheep的解釋,GroovyDoc List的'<<'(leftShift)是:http://docs.groovy-lang.org/docs/latest/html/groovy-jdk/java/util/List.html#leftShift(java.lang.Object)和'+'(加號)是:http://docs.groovy-lang.org/docs/latest/html/groovy-jdk/java/util/List.html#plus(java.lang.Iterable) – bdkosher

+0

@UnholySheep So我如何知道哪種方法修改了列表,哪些不修改?在使用該方法之前,我是否需要不斷檢查文檔? – saurav

回答

2

println(l<<5)被追加到5l,然後打印l

println(l+[6])是創建具有所有的l加上所有的內容,內容上是對+的右手邊(在你的情況下,它只是包含數字6)的列表清單。然後打印該列表。這並不會改變l的值或狀態。