0

我试图从 Programming in Scala 中运行一个示例,但编译器给了我错误:

Description Resource Path Location Type illegal start of statement (no modifiers allowed here) ChecksumAcc.sc /HelloWorld/src line 3 Scala Problem

基本上抱怨private

import scala.collection.mutable.Map

object ChecksumAcc {
    private val cache = Map[String, Int]()

}

我正在为 Scala 工作表使用 Eclipse。更新后也一样。我相信它使用 2.9.3 scala 编译器。为什么不编译?

4

2 回答 2

2

不确定您的实际问题是什么,但 Scala 工作表有一些特殊规则(如非常明确的错误消息所示......)。如果您必须使用工作表,您可以做的一件事是将所有代码放入这样的Worksheet对象中:

object Worksheet {
  import scala.collection.mutable.Map

  object ChecksumAcc {
    private val cache = Map[String, Int]()
  }
}

或者,使用 Eclipse 的“New Scala object...”并使用它而不是工作表。

于 2013-05-28T04:51:04.397 回答
0

为了避免您看到的错误消息,当您在 Eclipse Scala 工作表中工作时,将 Class 定义和 Companion 类(Singleton 对象)包装在同一个对象中

object worksheet { 
 class CheckSumAccumulator {
 ... 
 } 
  object CheckSumAccumulator { 
  ... 
  } 
  CheckSumAccumulator.calculate("foobar")

}
于 2014-05-29T18:52:36.933 回答