具体来说,我在这里看问题1
http://pavelfatin.com/scala-for-project-euler/
列出的代码如下
val r = (1 until 1000).view.filter(n => n % 3 == 0 || n % 5 == 0).sum
Run Code Online (Sandbox Code Playgroud)
我可以遵循除"视图"之外的所有内容.事实上,如果我拿出视图代码仍然编译并产生完全相同的答案.
scala> (1 to 10).iterator.map{_ * 2}.toList
res1: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
scala> (1 to 10).view.map{_ * 2}.force
res2: Seq[Int] = Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
Run Code Online (Sandbox Code Playgroud)
除了使用next,hasNext之外,何时应该选择迭代器优先于视图还是查看迭代器?