微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决scala 迭代器具有下一个随机行为

git rm Machineinspection.WebUI.csproj.user
git rm obj/Debug/DesightTimeResolveAssemblyReferencesInput.cache

最后一行给出 True,而 for

var intList = Iterator(range(1,10))
println("data"+intList)
println(intList.hasNext)

最后一行给出 False

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

解决方法

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

println("data " + intList)

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

println("data " + intList.toList)

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。