对象中的私有字段无法编译

时间:2013-05-27 22:54:40

标签: eclipse scala

我尝试从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]()

}

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

2 个答案:

答案 0 :(得分:2)

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

object Worksheet {
  import scala.collection.mutable.Map

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

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

答案 1 :(得分:0)

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

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

}