fun main() {
var list1 = listOf("AAAA", "ASAS", "ADDAD", "AS")
var list2 = list1
println(list2 === list1)
list2 = list2
.filter { it.length >= 3 }
println(list2 === list1)
}
上面代碼的輸出是:
true
false
但我很困惑為什么 list1 沒有被修改,因為 list1 和 list2 都首先參考同一個串列物件。誰能幫我理解這里到底發生了什么?
uj5u.com熱心網友回復:
確實,filter確實創建了一個新串列。
當你這樣做時
list2 = list2
.filter { it.length >= 3 }
您正在將該新串列分配給list2,因此現在list2停止參考所list1參考的內容,并開始參考由創建的串列filter。所以,list2和list1現在指的是不同的東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/479638.html
下一篇:我試圖通過反射設定列舉欄位
