2012-09-17 45 views
1

为什么6?我想定义序列(5,6,...)。如何正确使用“val”而不是“def”?定义简单流时奇怪的斯卡拉行为

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

我使用Scala的2.9.2

回答

4

你需要一些括号来告诉它应用到mapf,而不是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) 
+1

非常感谢。我必须失明;-) – kopper