用于将列表映射到列表元素顺序的简单scala代码.(用于生成行号)

cgo*_*gon 2 scala

我有简单的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)

问题是我正在改变变量,我觉得这不是正确的做法.

你能建议我一个更好的方法吗?

Bri*_*ian 5

你可以用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)