2017-07-04 1 views
0

を最後の繰り返しを処理するには、私が上toStringを呼び出していますオブジェクトのリストを持っているし、次のように異なった最後のオブジェクトを処理したいと思います:Scalaのリストに反復処理し、異なっ

o1 = Array(...) 
o2 = Array(...) // same length as o1 
sb = new StringBuilder() 
for (i <- 0 to o1.size() - 1) 
    sb.append(o1.get(i).toString() + " & " o2.get(i).toString()) 
    // if not last iteration then append ", " 

はへの簡単な方法がありますiなどの値をチェックするのではなく、これをスカラーで記述しますか?

+0

すべてのアイテムが一意の場合は、 'o1.last'と' o1.get(i) 'を比較して、等しい場合は追加しません。 – crowchirp

答えて

2

@ jwvh's anwserは良いです。

もう1つのパターンマッチングバージョンを提供します。

o1.zip(o2).map({case (item1, item2) => s"$item1 & $item2"}).mkString(", ") 
+0

'({'と '' {''両方は必要ありません。 – jwvh

1

これを試してください。

o1.zip(o2).map(t => s"${t._1} & ${t._2}").mkString(", ") 

mkString()はコンマを挿入させ、アレイを一緒にZIP、所望の文字列に各ペアを回します。