在使用可变scala TreeSet时,我在同一组上多次调用range / from / until方法时遇到了一些奇怪的行为。以下代码块将问题提炼下来:
object MapTest extends App{
override def main(args: Array[String]) {
val mutableSet = scala.collection.mutable.TreeSet(3, 2, 5)
println(mutableSet)
println(mutableSet.from(2).from(3))
println(mutableSet.until(5).until(3))
println(mutableSet.range(2, 4).range(2, 4))
println(mutableSet.from(2).until(4))
val immutableSet = scala.collection.immutable.TreeSet(3, 2, 5)
println(immutableSet)
println(immutableSet.from(2).from(3))
println(immutableSet.until(5).until(3))
println(immutableSet.range(2, 4).range(2, 4))
println(immutableSet.from(2).until(4))
}
}
产生以下输出
TreeSet(2, 3, 5)
TreeSet()
TreeSet()
TreeSet()
TreeSet()
TreeSet(2, 3, 5)
TreeSet(3, 5)
TreeSet(2)
TreeSet(2, 3)
TreeSet(2, 3)
如您所见,不可变集的行为与预期一致,允许多次调用from,until和range。但是在可变映射上,除第一个之外的任何调用都会产生一个空列表。 (我也确认在可变图上单次调用from,to或range做了正确的事。)
如果重要,我使用的是scala 2.10.3
答案 0 :(得分:1)
在我的计算机上尝试代码时,我得到以下输出:
def some_function():
some_dict = {'random': 'values'}
a = some_dict['random']
return a
所以我猜这是一个错误。我在2.11.6
下运行它