1

我有一个字符串列表,比如

val myList = List("apple", "orange", "pear")

我想把它转换成一个字符串,比如“1)苹果 2)橙子 3)梨”。我可以写一个 for 循环,但我认为在 Scala 中应该有这样的事情的单行。我能想到的最好的单线是

val myString = myList.map(s => "1) " + s).mkString(" ")

但这会导致“1)苹果1)橙1)梨”。映射列表时如何增加值?

4

4 回答 4

8

Easy peasy(带有字符串插值的scala 2.10 ):

myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }
于 2013-06-06T18:15:30.070 回答
2

老实说,我不会推荐它,但你实际上可以让你的版本工作:

val myString = myList.map{var i=0; s => i+=1; i + ") " + s}.mkString(" ")
于 2013-06-06T20:54:11.280 回答
1

实际上,没有缺少加号。试试看。我的小修改是在末尾添加 mkString 。

myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }.mkString(" ")
于 2013-06-06T18:28:16.633 回答
0

我的解决方案是:

myList.map{value => s"${myList.indexOf(value)+1}) $value"}
于 2017-07-04T16:07:49.617 回答