在Scala中循环的正确方法

nab*_*nab 2 for-loop scala

假设我在Scala中有一个字符串数组:

val strings = Array[String]("1", "2", "3", "4", "5", "6", "7")
Run Code Online (Sandbox Code Playgroud)

我需要的是创建一个新的数组,哪些元素将作为第一个数组的每三个(任意数量)后续元素的串联获得,这应该导致 ("123", "456", "7")

作为Scala的新手,我编写了以下代码,既不简洁也不有效:

var step = 3
val strings = Array[String]("1", "2", "3", "4", "5", "6", "7")
val newStrings = collection.mutable.ArrayBuffer.empty[String]

for (i <- 0 until strings.length by step) {
  var elem = ""
  for (k <- 0 until step if i + k < strings.length) {
    elem += strings(i + k)
  }
  newStrings += elem
}
Run Code Online (Sandbox Code Playgroud)

Scala的做法是什么?

Rog*_*ach 9

strings.grouped(3).map(_.mkString).toArray
Run Code Online (Sandbox Code Playgroud)

要么

strings grouped 3 map (_.mkString) toArray
Run Code Online (Sandbox Code Playgroud)

我个人比较喜欢第一个版本:)