【问题标题】:Eclipse doesn't resolve forward references of scalaEclipse 不解析 scala 的前向引用
【发布时间】:2013-10-15 08:33:30
【问题描述】:

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

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

但 Eclipse 编译器抱怨前向引用:

前向引用扩展了价值谎言的定义

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

我应该如何解决这个问题?

编辑 我试图在工作表、main、方法和 REPL 中声明它。最后一个效果很好。

【问题讨论】:

    标签: eclipse scala fibonacci


    【解决方案1】:

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

    [编辑]

    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 }
    }
    

    【讨论】:

    • 我收回了。仅当 fibs 是字段而不是本地 val 时才有效。
    猜你喜欢
    • 2017-01-20
    • 2012-12-23
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多