首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Scala中编译文件

无法在Scala中编译文件
EN

Stack Overflow用户
提问于 2011-12-30 15:43:03
回答 5查看 782关注 0票数 4

在“Scala入门”一书中的一个例子中,脚本是:

代码语言:javascript
复制
import scala.collection.mutable.Map

object ChecksumAccumulator {
 private val cache=Map[String,Int]()
 def calculate(s: String):Int =
   if(cache.contains(s))
     cache(s)
   else{
     val acc = new ChecksumAccumulator
     for(c <- s)
       acc.add(c.toByte)
     val cs=acc.checksum
      cache+= (s -> cs)
     cs
  }
}

但是,当我试图编译这个文件,然后生成一个错误,"not ChecksumAccumulator.scala : type ChecksumAccumulator val acc = $scalac ChecksumAccumulator",有什么建议吗?

谢谢,

EN

回答 5

Stack Overflow用户

发布于 2011-12-30 15:49:56

“object”关键字定义的是单例对象,而不是类。所以你不能新建一个对象,' new‘关键字需要一个类。

检查此Difference between object and class in Scala

票数 7
EN

Stack Overflow用户

发布于 2011-12-30 19:50:19

您可能遗漏了一些代码,如下所示

类ChecksumAccumulator { //... }

票数 3
EN

Stack Overflow用户

发布于 2011-12-31 00:27:49

其他答案说出问题是正确的,但并不能真正帮助你理解为什么书中的例子显然是不正确的。

但是,如果您查看Artima站点,您会发现the example is in a file here

您的代码是一个不完整的片段。该文件还包括以下行

代码语言:javascript
复制
// In file ChecksumAccumulator.scala
class ChecksumAccumulator {
  private var sum = 0
  def add(b: Byte) { sum += b }
  def checksum(): Int = ~(sum & 0xFF) + 1
}

..。如果没有它,你会得到你曾经有过的错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8677301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档