如何将scala.xml.Attribute序列转换为scala.xml.MetaData?
这里没有什么可补充的。当然,我能够用命令式的编码风格以某种方式完成它,但我很好奇如何很好地解决这个问题如何将scala.xml.Attribute序列转换为scala.xml.MetaData?,scala,scala-xml,Scala,Scala Xml,这里没有什么可补充的。当然,我能够用命令式的编码风格以某种方式完成它,但我很好奇如何很好地解决这个问题 def this( arguments: Seq[(String, String)], merges: Seq[(String, String)]) = this { val metadata: Seq[Attribute] = ( arguments ++ merges ).groupBy( _._1 ).map { case (key, value) =&g
def this( arguments: Seq[(String, String)], merges: Seq[(String, String)]) = this
{
val metadata: Seq[Attribute] = ( arguments ++ merges ).groupBy( _._1 ).map
{
case (key, value) => Attribute( None, key, Text( value.map( _._2 ).mkString( " " ) ), Null )
}
var result: MetaData = Null
for( m <- metadata ) result = result.append( m )
result
}
def this(参数:Seq[(String,String)],merges:Seq[(String,String)])=this
{
val元数据:Seq[Attribute]=(参数++合并).groupBy(u._1).map
{
大小写(键,值)=>属性(无,键,文本(value.map(u._2).mkString(“”),Null)
}
变量结果:元数据=Null
对于(m这个怎么样
metadata.fold(Null)((soFar, attr) => soFar append attr)
所以,如果你愿意的话,你可以完全去掉中间变量。
全文:
谢谢你给我指出fold。到目前为止,我一直忽略了这个方法,因为foldLeft和丑陋的类型错误一直困扰着我。。fold(Null)(\uappend)
正是我需要的。
def foo(arguments: Seq[(String, String)], merges: Seq[(String, String)]) =
(arguments ++ merges).groupBy(_._1).map {
case (key, value) => Attribute(None, key, Text(value.map(_._2).mkString(" ")), Null)
}.fold(Null)((soFar, attr) => soFar append attr)