我正在尝试将元素添加到列表中,但它总是最终使所有元素都相等。 我在这段代码中添加了元素:
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
。我尝试将::
更改为::=
,::+
以及许多不同的组合,但从未设法获得正确的结果。
有谁知道我做错了什么?
答案 0 :(得分:4)
您正在循环中更改dateTimeBegin中的值。想一想:你在列表中添加了对相同变量的五个引用,然后你想知道为什么它们都具有相同的值......
他们不喜欢scala中的可变变量......