尝试生成显示主要因子多重性的元组列表...想法是将排序列表中的每个整数与元组中的第一个值进行匹配,并使用第二个值进行计数。可能用takeWhile
更容易做到,但是。不幸的是我的解决方案将无法编译:模式匹配过程中需要稳定的标识符? (Scala)
def primeFactorMultiplicity (primeFactors: List[Int]) = {
primeFactors.foldRight (List[(Int, Int)]()) ((a, b) => (a, b) match {
case (_, Nil) => (a, 1) :: b
case (b.head._1, _) => (a, b.head._2 + 1) :: b.tail
case _ => (a, 1) :: b
})
}
它说:“错误:需要稳定的标识符,但b.head._1发现。”但改变第二case
线以下工作正常:
case (i, _) if (i == b.head._1) => (a, b.head._2 + 1) :: b.tail
这是为什么,为什么不能编译器处理,如果有这样一个简单的解决?
欢呼声中,貌似我不明白模式匹配是如何工作的。我应该在这些日子里读一本关于Scala的书。 –
@Luigi:我建议你从这里开始http://www.artima.com/pins1ed/;) –