0

ここに追加することはあまりありません。もちろん、命令型のコーディングスタイルでなんとかしてそれを成し遂げることはできますが、これをうまく解決する方法に興味があります。

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
}
4

1 に答える 1

2

これはどう?

metadata.fold(Null)((soFar, attr) => soFar append attr)

ですから、もしあなたがそんなに傾いているなら、あなたは中間変数を完全になくすことができます。略さずに:

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)
于 2013-03-04T05:37:43.040 に答える