Scala:映射列表时的增量值

Scala:映射列表时的增量值,scala,Scala,我有一个字符串列表,比如 val myList = List("apple", "orange", "pear") 我想把它转换成像“1)苹果2)橘子3)梨”这样的字符串。 我可以写一个for循环,但我认为在Scala中应该有这样一个单行程序。 我能想到的最好的一句台词是 val myString = myList.map(s => "1) " + s).mkString(" ") 但结果是“苹果、橘子、梨”。映射列表时如何增加值 Easy peasy(scala 2.10带): Ea

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

val myList = List("apple", "orange", "pear")
我想把它转换成像“1)苹果2)橘子3)梨”这样的字符串。 我可以写一个for循环,但我认为在Scala中应该有这样一个单行程序。 我能想到的最好的一句台词是

val myString = myList.map(s => "1) " + s).mkString(" ")
但结果是“苹果、橘子、梨”。映射列表时如何增加值

Easy peasy(scala 2.10带):

Easy peasy(scala 2.10带):


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

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

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

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

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

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

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

val myString = myList.map{var i=0; s => i+=1; i + ") " + s}.mkString(" ")
我的解决办法是:

myList.map{value => s"${myList.indexOf(value)+1}) $value"}
我的解决办法是:

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

这是有帮助的:这是有帮助的:谢谢,在(i+1)之后缺少一个加号,但是在添加它正在工作之后。现在我只需要理解它:)哦,这个版本更好:)谢谢你,在(I+1)之后缺少一个加号,但是在加上它正在工作之后。现在我只需要理解它:)哦,这个版本更好:)好吧,这里缺少加号:-)一个小的改进建议,在zipWithIndex之前添加
view
myList.view.zipWithIndex.map{case(cases,I)=>s“${I+1}$cases”}.mkString(“”
,这样中间列表将以一种惰性的方式初始化,缺少加号:-)一个小的改进建议,在zipWithIndex之前添加
view
myList.view.zipWithIndex.map{case(cases,i)=>s“${i+1}$cases”}.mkString(“”
),这样中间列表将以惰性方式初始化