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

标签 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)

}

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

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

最佳答案

您可以使用 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

关于scala - 用于将列表映射到列表元素顺序的简单 Scala 代码。 (用于生成行号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24155532/

相关文章:

java - 在 Windows 上连续删除早于 X 小时的文件的最有效方法是什么?

java.time 未使用 jackson 正确反序列化

java - Scala Actor 效率低下问题

css - 在 CSS Play 框架内访问 Assets

scala - 仿函数有什么用处?

scala - 在 Scala 中创建最小堆最简单、最有效的方法是什么?

java - 创建用户提示并模拟交互

java - 卡夫卡 : Publish message only if it doesn't already exist

scala - 具有类型成员的隐式包装特征无法编译

scala - 使 F[_] 在接受 IO 时实现 Monad 特性