Las siguientes instrucciones no hacen lo mismo siempre:
output+=item output.add(item)
Si el elemento es una lista la primera operacion implica añadir los elementos de la lista y la segunda inserta en la lista destino un objeto de tipo lista.
Si no te lo crees chequea esto:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def input=[1,[2,3],4] | |
def output=[] | |
//Warning!! Potential error | |
input.each{ | |
output+=it | |
} | |
println output //=>[1,2,3,4]!!! | |
println output.size()//=>4 | |
//Right way | |
output=[] | |
input.each{ | |
output.add(it) | |
} | |
println output //=>[1,[2,3],4]!!! | |
println output.size()//=>3 |