【发布时间】:2012-11-23 16:12:07
【问题描述】:
有人可以解释一下 REPL 的以下输出吗?
我正在定义 2 个(无限)流,它们在其他方面的定义相同,只是 map 在一个定义中以 .(句点)开头,而 _ (空间)在另一个。
我可以看到这会导致 map 以不同的方式绑定,但是第二个定义的输出中的 1 会发生什么?
谢谢。
scala> lazy val infinite: Stream[Int] = 1 #:: infinite.map(_+1)
infinite: Stream[Int] = <lazy>
scala> val l = infinite.take(10).toList.mkString(",")
l: String = 1,2,3,4,5,6,7,8,9,10
scala> lazy val infinite2: Stream[Int] = 1 #:: infinite2 map(_+1)
infinite2: Stream[Int] = <lazy>
scala> val l2 = infinite2.take(10).toList.mkString(",")
l2: String = 2,3,4,5,6,7,8,9,10,11
【问题讨论】: