gpt4 book ai didi

scala - 模式匹配期间需要稳定的标识符吗? (斯卡拉)

转载 作者:行者123 更新时间:2023-12-04 03:13:10 25 4
gpt4 key购买 nike

试图生成一个显示素因数多重性的元组列表......这个想法是将排序列表中的每个整数与元组中的第一个值相匹配,使用第二个值进行计数。使用 takeWhile 可能更容易做到这一点,但是嗯。不幸的是,我的解决方案无法编译:

  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

为什么会这样,如果有这么简单的修复,为什么编译器不能应对?

最佳答案

模式中的变量捕获该位置的值;它不做比较。如果语法有效,结果将是 a 的值。进入 b.head._1 ,覆盖当前值。这样做的目的是让您使用模式从复杂的结构中提取某些内容。

关于scala - 模式匹配期间需要稳定的标识符吗? (斯卡拉),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com