2017-07-04 51 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()插入逗号。