我遇到了这种让我吃惊的行为。本质上,如果我从两个不同的 XML 文字创建“相同”的 XML Elem
,它们就不能相互相等。这里的独特之处在于我在一个中使用a Boolean
,在另一个中使用a String
。
scala> import scala.xml._
import scala.xml._
scala> val t: Boolean = true
t: Boolean = true
scala> val fromBoolean: Elem = <b>{t}</b>
fromBoolean: scala.xml.Elem = <b>true</b>
scala> val fromString = <b>true</b>
fromString: scala.xml.Elem = <b>true</b>
scala> fromString == fromBoolean
res0: Boolean = false
这是预期的行为吗?
似乎 Scala 正在存储底层类型,而 Boolean 并不严格等于 String。
这是正确的解释吗,谁能解释这里到底发生了什么?我找不到检查两个节点内的底层类型的方法。如果我看孩子们,他们只是看起来很Node
s。
scala> fromString.child(0)
res1: scala.xml.Node = true
scala> fromBoolean.child(0)
res2: scala.xml.Node = true