在可变树集上从/直到/范围调用两次导致空序列

时间:2015-12-23 05:15:10

标签: scala

在使用可变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

1 个答案:

答案 0 :(得分:1)

在我的计算机上尝试代码时,我得到以下输出:

def some_function():
    some_dict = {'random': 'values'}
    a = some_dict['random']
    return a

所以我猜这是一个错误。我在2.11.6

下运行它