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(“”
),这样中间列表将以惰性方式初始化