2017-07-04 79 views
0

我有我的呼喚toString對象的列表,並想以不同方式對待的最後一個對象如下:迭代斯卡拉列表和治療最後一次迭代的不同

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 ", " 

有一個簡單的方法來用scala寫這個而不是檢查i等的值?

+0

如果所有項目都是唯一的,您可以比較'o1.last'到'o1.get(i)',如果它們相等則不要附加。 – crowchirp

回答

2

@ jwvh的anwser是好的。

只是給另一模式匹配版本。

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()插入逗號。