我試圖添加元素到列表中,但它總是以所有元素相等的方式結束。 我中添加元素的代碼塊:爲什麼這個Scala列表中的所有元素都相等?
var slots = List[Calendar]()
while (dateTimeBegin.getTime().compareTo(dateTimeEnd.getTime()) == -1) {
dateTimeBegin.add(Calendar.MINUTE, 50)
slots = dateTimeBegin :: slots
println(dateTimeBegin.getTime())
}
這println
打印此:
//> Wed May 25 12:50:00 WEST 2016
//| Wed May 25 13:40:00 WEST 2016
//| Wed May 25 14:30:00 WEST 2016
//| Wed May 25 15:20:00 WEST 2016
//| Wed May 25 16:10:00 WEST 2016
當我嘗試打印的清單:
for (i <- 0 to slots.length - 1) {
println(slots(i).getTime())
}
我得到這樣的輸出:
//> Wed May 25 16:10:00 WEST 2016
//| Wed May 25 16:10:00 WEST 2016
//| Wed May 25 16:10:00 WEST 2016
//| Wed May 25 16:10:00 WEST 2016
//| Wed May 25 16:10:00 WEST 2016
我試圖以各種方式更改行slots = dateTimeBegin :: slots
。我試圖將::
更改爲::=
,::+
和很多不同的組合,但從未設法得到正確的結果。
有誰知道我做錯了什麼?
嘗試使用更多功能的方法來避免此類問題(不變性) – pedrorijo91