无法识别Scala独立对象

无法识别Scala独立对象,scala,class,object,Scala,Class,Object,我正在使用脚本xyz.scala创建一个单例对象,如下所示: object ChecksumCalculator { def calcChecksum(s: String): Int = { val cc = new ChecksumCalculator for (c <- s) cc.add(c.toByte)

我正在使用脚本xyz.scala创建一个单例对象,如下所示:

object ChecksumCalculator {
                 def calcChecksum(s: String): Int = {
                   val cc = new ChecksumCalculator
                   for (c <- s)
                     cc.add(c.toByte)
                   cc.checksum
} }
虽然我已经在顶部声明了独立对象,但是我的独立对象是否可能没有被识别


还是因为其他错误?

在scala中,单例对象在使用时被实例化,并保证只实例化一次,因此提供了严格的“单例”语义

假设对象具有方法“add(b:Byte)”,则可以执行以下操作:

CheckSumCalculator.add(c.toByte)
但考虑到我们在
CheckSumCalculator
的范围内,使用它就足够了:

add(c.toByte)

也就是说,使用单例对象进行可变操作似乎是个坏主意

看起来您正在寻找的是创建某个类的实例,但也有一些可以静态调用的工具方法

该结构在Scala中有一个名称:a

通过创建与某些给定类同名的对象来定义伴生对象

将其转化为这种情况,我们将有:

class ChecksumCalculator {
  def add(b:Byte) = ???
  def checksum(): Int = ??? // or whatever type the checksum is
}
object ChecksumCalculator {  // this is a companion object
  def calcChecksum(s: String): Int = {
    val cc = new ChecksumCalculator
    s.foreach(c => cc.add(c.toByte))
    cc.checksum()
  }
}

无法实例化Scala对象。是否缺少一个类?它在我的代码中只实例化了一次,其中正在创建
val cc
。在Scala中初始化
val cc
@Sarang时是否有错误?您没有实例化对象。一旦声明,就可以按说明使用。如果你想要一个实例,你需要一个
。好的,我知道了。但在我的代码中,什么应该取代
val cc=new checksumccalculator
。不需要。你应该移除它。假设您保留了
对象
实现,那么您可以像这样引用对象中的方法:
ChecksumCalculator.add(…)
ChecksumCalculator.foo(…)
。在这种情况下,单例对象似乎不是正确的选择。如果我是你,我会考虑将功能实现为<代码>类< /代码> @ Sarang。我想我理解了你的问题的“根”。请参见上面的编辑。
class ChecksumCalculator {
  def add(b:Byte) = ???
  def checksum(): Int = ??? // or whatever type the checksum is
}
object ChecksumCalculator {  // this is a companion object
  def calcChecksum(s: String): Int = {
    val cc = new ChecksumCalculator
    s.foreach(c => cc.add(c.toByte))
    cc.checksum()
  }
}