我正在做关于Scala的Martin Odersky课程。 在其中一个作业中,我有以下类型:
type Occurrences = List[(Char, Int)]
我已经定义了一个从(Char, Int)
类型的元素中减去Occurrences
类型元素的方法。
def subtractOne(x: Occurrences, (char: Char, nr: Int)): Occurrences = x match {
case List() => throw new Exception("can not subtract")
case (char, nr2) :: ocs => {
if(nr2 > nr) (char, nr2 - nr) :: ocs
else if(nr2 == nr) ocs
else throw new Exception("can not subtract")
}
case _ :: ocs => subtractOne(ocs, (char, nr))
}
但是,我在第一行收到一些不明确的错误:Wrong parameter
和Definition or declaration expected
。
我宣布参数的方式有什么问题吗?
答案 0 :(得分:2)
请勿在参数列表中使用括号。除非你想定义元组,但它应该用一个名字来完成。
def subtractOne(x: Occurrences, char: Char, nr: Int): Occurrences = x match {
答案 1 :(得分:2)
元组以一个名称定义 - charAndNr:(Char,Int) Nil也优于List()