scala match *从xsd生成的字符串* maxOccurs =" unbounded"

时间:2015-03-13 09:55:27

标签: scala xsd pattern-matching variadic-functions

我有一个xsd:

  <xs:complexType name="records">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

scalaxb生成了这段代码:

case class Records(returnValue: String*)

我尝试了这种模式匹配:

... match {
  case Records(ids: String*) =>
    ...

然后编译错误是:

')' expected but identifier found.
        case Records(ids: String*) =>
                                ^

我也尝试了case Records(ids: Array[String])case Records(ids: Seq[String]),但没有成功。

如何使用scala模式匹配来匹配此类?

1 个答案:

答案 0 :(得分:1)

scala> Records("a", "b") match {
         case Records(strings @ _*) => strings.foreach(println)
       }
a
b


scala> Records("a", "b") match {
         case Records(one) => println("one")
         case Records(one, two) => println("two")
         case Records(one, two, rest @ _*) => println("more than two")
       }
two