gpt4 book ai didi

scala - XML 文字中的属性只接受字符串?

转载 作者:行者123 更新时间:2023-12-04 20:56:55 27 4
gpt4 key购买 nike

似乎您必须将 XML 文字中的属性值显式指定为字符串:

scala> val foo = 3
foo: Int = 3

scala> <bar id={ foo } />
<console>:10: error: overloaded method constructor UnprefixedAttribute with alternatives:
(key: String,value: Option[Seq[scala.xml.Node]],next: scala.xml.MetaData)scala.xml.UnprefixedAttribute <and>
(key: String,value: String,next: scala.xml.MetaData)scala.xml.UnprefixedAttribute <and>
(key: String,value: Seq[scala.xml.Node],next1: scala.xml.MetaData)scala.xml.UnprefixedAttribute
cannot be applied to (java.lang.String, Any, scala.xml.MetaData)
<bar id={ foo } />
^

scala> <bar id={ foo.toString } />
res16: scala.xml.Elem = <bar id="3"></bar>

构造函数不能简单地接受一个 Any 参数并在其上调用 toString 吗?由于以下工作,
scala> <bar>{ foo }</bar>
res21: scala.xml.Elem = <bar>3</bar>

这个 API 有一点不对称。这有什么特别的原因吗?

最佳答案

您可以为这种情况添加隐式转换:

scala> val foo = 3
foo: Int = 3

scala> implicit def anyToText( a: AnyVal ) = xml.Text( a.toString )
anyToText: (a: AnyVal)scala.xml.Text

scala> <bar id={foo}/>
res2: scala.xml.Elem = <bar id="3"></bar>

关于scala - XML 文字中的属性只接受字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480704/

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