假设我在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的做法是什么?
strings.grouped(3).map(_.mkString).toArray
Run Code Online (Sandbox Code Playgroud)
要么
strings grouped 3 map (_.mkString) toArray
Run Code Online (Sandbox Code Playgroud)
我个人比较喜欢第一个版本:)
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |