无法识别Scala独立对象
我正在使用脚本xyz.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)
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()
}
}