从 xsd 生成的 scala 匹配字符串 * 与 maxOccurs="unbounded"
scala match String* generated from xsd with maxOccurs="unbounded"
我有一个 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 模式匹配来匹配这个 class?
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
我有一个 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 模式匹配来匹配这个 class?
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