仅匹配案例类中的一些参数,而不是为所有选项添加N个占位符

时间:2013-05-04 04:43:31

标签: scala pattern-matching case-class

我有我的匹配:

 val product = parser next match {
      case EvElemStart(_, "Product", attrs, _) =>
        Some(parseProduct( parser, attrs ))
      case _ =>
        readNext()
 }

此处我有4个可能的属性,并使用第2和第3个 - "Product"attrs

让我们假设EvelementStart有20个参数。

那么,如果我只想第一次,或者仅第二次值/参数,我应该提及“_”占位符19次吗?

1 个答案:

答案 0 :(得分:8)

  

让我们假设EvelementStart有20个参数。

     

那么,如果我只想先使用/检查/匹配,或者只是第二个值/参数,我应该提及“_”占位符19次吗?

是的,这就是它的工作方式。你有一些选择:

您可以匹配类型,并使用匹配对象的字段:

case e : EvElemStart if  (e.typeString == "Product") =>
    Some(parseProduct( parser, e.attrs ))

或者您可以编写自己的提取器:http://www.scala-lang.org/node/112