我有一个字符串列表,比如
val myList = List("apple", "orange", "pear")
我想把它转换成一个字符串,比如“1)苹果 2)橙子 3)梨”。我可以写一个 for 循环,但我认为在 Scala 中应该有这样的事情的单行。我能想到的最好的单线是
val myString = myList.map(s => "1) " + s).mkString(" ")
但这会导致“1)苹果1)橙1)梨”。映射列表时如何增加值?
我有一个字符串列表,比如
val myList = List("apple", "orange", "pear")
我想把它转换成一个字符串,比如“1)苹果 2)橙子 3)梨”。我可以写一个 for 循环,但我认为在 Scala 中应该有这样的事情的单行。我能想到的最好的单线是
val myString = myList.map(s => "1) " + s).mkString(" ")
但这会导致“1)苹果1)橙1)梨”。映射列表时如何增加值?
Easy peasy(带有字符串插值的scala 2.10 ):
myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }
老实说,我不会推荐它,但你实际上可以让你的版本工作:
val myString = myList.map{var i=0; s => i+=1; i + ") " + s}.mkString(" ")
实际上,没有缺少加号。试试看。我的小修改是在末尾添加 mkString 。
myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }.mkString(" ")
我的解决方案是:
myList.map{value => s"${myList.indexOf(value)+1}) $value"}