gpt4 book ai didi

xml - 带空格的 Scala XML 模式

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:38 26 4
gpt4 key购买 nike

xml 是否有匹配以下模式的值?

xml match { case <foo> { x } </foo> => 42 }

最佳答案

是的。

scala> val x = 33
x: Int = 33

scala> val xml = <foo> { x } </foo>
xml: scala.xml.Elem = <foo> 33 </foo>

scala> xml match { case <foo> { x } </foo> => 42 }
res0: Int = 42

我认为您的困惑来自于它与 <foo> 33 </foo> 不匹配

scala> <foo> 33 </foo> match { case <foo> { x } </foo> => 42 }
scala.MatchError: <foo> 33 </foo> (of class scala.xml.Elem)

这是因为当你使用 {} , scala 为 {} 前后的空格插入额外的元素,所以你得到三个元素,而不是一个。你可以通过调用 unapplySeq 来查看。 (这是用于模式匹配的):

scala> scala.xml.Elem.unapplySeq(<foo> 33 </foo>)
res4: Option[(String, String, scala.xml.MetaData, scala.xml.NamespaceBinding, Seq[scala.xml.Node])] =
Some((null,foo,,,ArrayBuffer( 33 )))

scala> scala.xml.Elem.unapplySeq(<foo> { x } </foo>)
res5: Option[(String, String, scala.xml.MetaData, scala.xml.NamespaceBinding, Seq[scala.xml.Node])] =
Some((null,foo,,,ArrayBuffer( , 33, )))

请注意,在第二个示例中,您在 ArrayBuffer 中获得了三个元素,而在第一个示例中只有一个。所以模式没有正确匹配。

关于xml - 带空格的 Scala XML 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com