我的代码如下:
class HuffmanNode(val chars: String, val occurrences: Int) {
override def toString: String = "{" + chars + "|" + occurrences + "}"
def absoluteValue: Int = occurrences
def getChars: String = chars
def getOccurrences: String = occurrences.toString
}
object HuffmanNode {
def apply(chars: String, occurrences: Int): HuffmanNode = {
new HuffmanNode(chars, occurrences)
}
}
我正在尝试创建一个HuffmanNode
列表,例如:
val PQ: List[HuffmanNode] = List(HuffmanNode("a", 3), HuffmanNode("b", 3))
如何访问 HuffmanNode 中的方法?
我尝试这样做:
PQ(0).getChars
但是我得到一个错误说,unable to resolve symbol getChars
.
问题可能是什么?
您的代码无法编译。如果我冒昧地猜测,我会想象您使用的是单例列表而不是类的实例(单例没有 getChars 方法,只有应用)。
如果您按照我在编辑中的建议更改代码,则调用getChars
方法没有问题:
class HuffmanNode(val chars: String, val occurrences: Int) {
override def toString: String = "{" + chars + "|" + occurrences + "}"
def absoluteValue: Int = occurrences
def getChars: String = chars
def getOccurrences: String = occurrences.toString
}
object HuffmanNode {
def apply(chars: String, occurrences: Int): HuffmanNode = {
new HuffmanNode(chars, occurrences)
}
}
val PQ: List[HuffmanNode] = List(HuffmanNode("a", 3), HuffmanNode("b", 3))
PQ(1).getChars
我得到了:
PQ: List[HuffmanNode] = List({a|3}, {b|3})
res0: String = b
但是我需要(只是为了测试)从absoluteValue
方法中删除关键字覆盖。
正如@Assaf Mendelson所指出的,你指的是单例对象而不是类的实例。
为了修复你的代码,你应该创建类的实例,而不是像:
val PQ = List(HuffmanNode("blabla", 2))
val chars = PQ(0).getChars // now compiles