从带有列表的For循环获取键(不是映射)

时间:2012-04-24 13:58:51

标签: scala playframework-2.0

我有一个模型列表(列表项),我在模板中循环:

@for(item <- items) {
    // ...
}

我想在item中获取items的键/索引位置有两个原因:

  1. 我会展示类似Item n° @key
  2. 的内容
  3. 我只想展示1/2件物品(我想:if (@key % 2)
  4. 如果使用List而不是Map,我怎样才能获得键/索引?

    感谢您的帮助

3 个答案:

答案 0 :(得分:11)

您可以使用其索引压缩列表:

@defining(List("foo", "bar", "baz")) { items => 
  @for((item, i) <- items.zipWithIndex if i % 2 == 0) {
    @item no @i <br/>
  }
}

打印哪些:

foo no 0 
baz no 2 

答案 1 :(得分:4)

你可以使用.zipWithIndex:

@for((item,i) <- items.zipWithIndex) {
    // ...
}

索引将从0开始。

答案 2 :(得分:1)

一个选项是在循环中添加“计数器”。只需在循环之前将其声明为var,将其初始化为0,并在循环结束时将其递增。

另一个选项是在迭代之前在列表中使用zipWithIndex。然后,不是获取循环变量中的项目,而是实际上有一个由该项及其列表中的索引组成的元组。