有一个类具有很长的构造函数参数列表:
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/