scala迭代器具有下一个随机行为

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)

最后一行给出 False

为什么即使 intList 是不可变的,我也不会将它分配给任何新变量。

回答

你说得对,列表在 Scala 中是不可变的。但是,您intList的不是列表;它是一个Iteratornext()用于迭代并且是可变的。

println("data " + intList)

这将打印出迭代器的表示。它可能会说“非空迭代器”之类的东西。它需要做的就是调用hasNext,它不会改变任何东西。

println("data " + intList.toList)

toList是一个方法(不要让括号的缺失欺骗了你;你在对象上调用的一切都是 Scala 中的一个方法),并耗尽迭代器,这意味着它会调用next()直到没有任何东西为止。那么你的迭代器是空的,所以hasNext正确地告诉你没有下一个值。


以上是scala迭代器具有下一个随机行为的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>