在Scala中分割范围的好方法

Djv*_*jvu 3 scala

假设我有以下代码,有没有办法将其简化为更美化的方式?

var i = 0
val step = 100
val limitArr = new ArrayBuffer[(Int, Int)]
while (i < rddPartNumber) {
   limitArr += ((i, i + step))
   i += step
}
Run Code Online (Sandbox Code Playgroud)

puh*_*len 5

您要做的基本上是遍历一系列数字。这可以通过映射到Range

val limits = (0 until rddPartNumber by step) map {i => (i , i + step)}
Run Code Online (Sandbox Code Playgroud)

或者,如果您喜欢for语法

for {i <- 0 until rddPartNumber by step}
yield (i, i + step)
Run Code Online (Sandbox Code Playgroud)