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

ses*_*ses 1 scala pattern-matching case-class

我有我的匹配:

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

在这里,我有4个可能的属性,使用第2和第3个 - "Product"attrs.

我们假设EvelementStart有20个参数.

然后,我要提到"_"占位的19倍,如果我想用/检查/匹配只有第一,或仅第二个值/参数?

Jen*_*der 8

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

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

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

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

case e : EvElemStart if  (e.typeString == "Product") =>
    Some(parseProduct( parser, e.attrs ))
Run Code Online (Sandbox Code Playgroud)

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