我有一个字符串列表,比如
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)梨”。如何在映射列表时增加值?
答案 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"}