scala - 模式的参数数量错误

标签 scala

有一个类具有很长的构造函数参数列表:

case class ClassA(a: Int, b: String, c: Int /*and so on*/)

我需要对它进行模式匹配:
val cls = getClassA
cls match {
  case ClassA(a, _, _, _, _, /* and so on */) => Some(a)
  case ClassA(_, _, c, _, _, /* and so on */) => Some(c)
  case _ => None
}

我需要捕获 a 的值或 c .是否可以不通过 _ 指定所有其他参数?如果我真的不需要它们?
val cls = getClassA
    cls match {
      case ClassA(a, _*) => Some(a)
      case ClassA(_, _, c, _*) => Some(c)
      case _ => None
    }

它给了我错误:wrong number of arguments for pattern ClassA(a, b, /*and so on*/)

最佳答案

在案例类中,您需要在匹配时指定整个参数列表。

另一种方法是实现您自己的 unapply正确处理传递给它的任何参数的方法。

关于scala - 模式的参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790264/

相关文章:

scala - 1个优秀元素未产生结果元素就完成了内部流程

scala - SBT:如何在多项目构建中使一项任务依赖于另一项,而不是在根项目中运行?

scala - 如何在带有循环的spark中创建when表达式

scala - 为什么一个值类不能包装另一个值类?

java - 如何基于列合并两个数据帧spark java/scala?

java - Spark : memory issues (GC overhead limit exceeded) when using cogroup with ListBuffer in Scala

scala - PlayFramework:如何转换 JSON 数组的每个元素

scala - 如何在 IDEA 12 中使用外部 Scala 编译器?

scala - 使用scalaz的free monad时如何避免堆栈溢出?

scala - 使用 SBT 0.12.x 交互式 shell 运行应用程序时,将提供的依赖项添加到类路径