我有简单的scala代码:
object CollectionSnippets extends App {
var closureVal = 0
def lineNum(s:String) : String = {
closureVal = closureVal + 1;
closureVal.toString + "." + s;
}
val list1 = List("aline","aline","aline")
val list2 = list1.map(lineNum)
list2.foreach(println)
}
Run Code Online (Sandbox Code Playgroud)
问题是我正在改变变量,我觉得这不是正确的做法.
你能建议我一个更好的方法吗?
你可以用zipWithIndex.
scala> list1.zipWithIndex.map(t => t._2 + ": " + t._1)
res0: List[String] = List(0: aline, 1: aline, 2: aline)
scala> res0.foreach(println(_))
0: aline
1: aline
2: aline
Run Code Online (Sandbox Code Playgroud)