0

我想使用这个 scala 特定表达式构建斐波那契数列:

val fibs: Stream[Int] = 0 #:: 1 #:: fibs.zip(fibs.tail).map { n => n._1 + n._2 }

但是eclipse编译器抱怨前向引用:

前向参考扩展了价值谎言的定义

有了这个问题,我无法在 eclipse 中运行 main 方法。

我应该如何解决?

编辑 我试图在工作表、main、方法和 REPL 中声明它。最后一个完美运行。

4

1 回答 1

0

这是工作表的限制。如果你把它放在一个单独的类或方法中,它应该可以工作。

[编辑]

fibs需要是一个字段。如果是本地 val,则需要惰性修饰符。

这应该有效:

 def foo {
   lazy val fibs: Stream[Int] = 0 #:: 1 #:: fibs.zip(fibs.tail).map { n => n._1 + n._2 }
 }

或者

class C {
  val fibs: Stream[Int] = 0 #:: 1 #:: fibs.zip(fibs.tail).map { n => n._1 + n._2 }
}
于 2013-10-17T13:16:05.053 回答