1
我的情況是,我有一個類Foo:Groovy中的「each」和「eachWithIndex」是否會生成深度副本或淺度副本?
class Foo {
List<Bar> barList;
//other stuff
}
,然後我想做的事:
void process (Foo obj){
obj.getBarList().each {
Bar bar ->
bar = doSomeStuff(bar)
}
}
請問此更新的對象foo的barList屬性?或者將我必須做一些事情,如:
void process (Foo obj){
obj.getBarList().eachWithIndex {
Bar bar ->
bar = doSomeStuff(bar)
obj.getBarList().set(bar, index)
}
}
它根本不會生成副本;它提供了列表中每個項目的參考。如果'doSomeStuff'在該引用上運行,那麼該列表將在原地進行修改。不管這是否是一種好的做法是一個單獨的討論(這很可怕,因爲你現在必須理解兩塊代碼才能推斷髮生了什麼)。 –