gpt4 book ai didi

scala 迭代器 hasNext 随机行为

转载 作者:行者123 更新时间:2023-12-04 02:25:35 41 4
gpt4 key购买 nike

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 不是列表;这是一个Iterator ,它使用 next() 进行迭代并且是可变的。

println("data " + intList)

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

println("data " + intList.toList)

toList 是一种方法(不要被缺少括号所迷惑;在 Scala 中,您对对象调用的所有内容都是一种方法),并耗尽迭代器,这意味着它调用 next() 直到什么都没有了。然后你的迭代器是空的,所以 hasNext 正确地告诉你没有下一个值。

关于scala 迭代器 hasNext 随机行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67906585/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com