var intList = Iterator(range(1,10))
println("data"+intList)
println(intList.hasNext)
最后一行给出True,而对于
var intList = Iterator(range(1,10))
println("data"+intList.toList)
println(intList.hasNext)
最后一行给出错误
为什么即使intList是不可变的,我也不会把它分配给任何新的变量。
列表在Scala中是不可变的。但是,您的intList
不是一个列表;它是一个Iterator
,它使用next()
进行迭代,并且是可变的。
println("data " + intList)
这将打印出迭代器的表示形式。它可能会说类似";非空迭代器";。它所需要做的就是调用hasNext
,这不会改变任何内容。
println("data " + intList.toList)
toList
是一个方法(不要让括号的缺失欺骗了你;你在对象上调用的所有东西都是Scala中的一个方法(,它耗尽了迭代器,这意味着它调用next()
,直到什么都没有了。那么迭代器是空的,所以hasNext
正确地告诉您没有下一个值。