Scala:在列表映射时增加值

时间:2013-06-06 18:11:46

标签: scala

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

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

我想把它变成像“1)apple 2)orange 3)pear”这样的字符串。 我可以写一个for循环,但我认为在Scala中应该有一个像这样的东西的单行程。 我能提出的最佳单线是

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

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

4 个答案:

答案 0 :(得分:7)

轻松(scala 2.10 with string interpolation):

myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }

答案 1 :(得分:2)

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

val myString = myList.map{var i=0; s => i+=1; i + ") " + s}.mkString(" ")

答案 2 :(得分:1)

实际上,没有遗漏加号。试试吧。 我的小修改是在最后添加mkString。

myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }.mkString(" ")

答案 3 :(得分:0)

我的解决方案是:

myList.map{value => s"${myList.indexOf(value)+1}) $value"}