迭代scala列表

use*_*377 3 scala playframework

我在play框架的scala模板中有一个字符串列表.
我希望一次迭代超过一半的列表,然后第二次迭代列表的另一半.
我不知道如何为此编写高效的迭代器.

我已经尝试过
@for(i <- 0 until list.length/2 ) {list(i) }
然后进行第二次循环

@for(i <- list.length/2+1 until list.length ) 
 { list(i) } 
Run Code Online (Sandbox Code Playgroud)


这有效,但复杂性变高.

后来我做了

  @defining(list.size) { size => 
    @for(i <- 0 until size/2) 
    {list(i) }
  }
Run Code Online (Sandbox Code Playgroud)


现在它似乎工作正常.

Bri*_*ian 5

这是一种方式.

scala> List("a","b","c","d","e")
res0: List[String] = List(a, b, c, d, e)

scala> res0.splitAt(res0.size/2)
res1: (List[String], List[String]) = (List(a, b),List(c, d, e))

scala> res1._1.foreach(println(_))
a
b

scala> res1._2.foreach(println(_))
c
d
e
Run Code Online (Sandbox Code Playgroud)