定义简单Stream时出现奇怪的Scala行为

时间:2012-09-17 21:07:53

标签: scala

为什么6?我想定义序列(5,6,...)。如何正确使用“val”而不是“def”?

scala> val f: Stream[Int] = 5 #:: f map { _ + 1 }
f: Stream[Int] = Stream(6, ?)

我正在使用scala 2.9.2

1 个答案:

答案 0 :(得分:4)

您需要一些括号来告诉它将map应用于f,而不是应用于5:

scala> val f: Stream[Int] = 5 #:: (f map { _ + 1 })
f: Stream[Int] = Stream(5, ?)

scala> f.take(5).toList
res2: List[Int] = List(5, 6, 7, 8, 9)