Scala 具有共享索引或播放2重复表单的GroupBy

Scala 具有共享索引或播放2重复表单的GroupBy,scala,functional-programming,playframework-2.0,Scala,Functional Programming,Playframework 2.0,我想用Play 2和Scala制作一个订单 以下是分组前的情况: <table> @items.zipWithIndex.map { case (item, index) => @itemRow(item, index) } </table> 这是导致值被覆盖的原因。 我需要我的索引在表单中是连续的,如下所示: # category 1 items[0].id = 1 items[0].count = 1 items[1].id = 2

我想用Play 2和Scala制作一个订单

以下是分组前的情况:

<table>
  @items.zipWithIndex.map {
    case (item, index) =>
      @itemRow(item, index)
  }
</table>
这是导致值被覆盖的原因。 我需要我的索引在表单中是连续的,如下所示:

# category 1
items[0].id = 1
items[0].count = 1
items[1].id = 2
items[1].count = 2

# category 2
items[2].id = 3
items[2].count = 1
items[3].id = 4
items[3].count = 5
@items.sortBy(item => item.category).zipWithIndex.groupBy{ case (item, _) => item.category}.map {
  case (categoryId, indexedItemsInCategory) =>
    <table>
      @indexedItemsInCategory.map {
        case (item, index) =>
          @itemRow(item, index)
      }
    </table>
}
所以有问题 对于函数式程序员:

  • 我可以为所有组共享索引变量吗
对于Play 2.0或web程序员:

  • 有没有其他方法可以使用重复值的可变计数生成表单
  • 如何避免发送这组计数为0的项目

我没有游戏方面的经验,因此我无法对特定于游戏的问题发表评论(也许它已经为您提供了帮助),但仅在scala Libraryr上,您就可以这样做:

# category 1
items[0].id = 1
items[0].count = 1
items[1].id = 2
items[1].count = 2

# category 2
items[2].id = 3
items[2].count = 1
items[3].id = 4
items[3].count = 5
@items.sortBy(item => item.category).zipWithIndex.groupBy{ case (item, _) => item.category}.map {
  case (categoryId, indexedItemsInCategory) =>
    <table>
      @indexedItemsInCategory.map {
        case (item, index) =>
          @itemRow(item, index)
      }
    </table>
}
@items.sortBy(item=>item.category).zipWithIndex.groupBy{case(item,)=>item.category}.map{
案例(类别ID,IndexedItemsIncegory)=>
@indexedItemsInCategory.map{
案例(项目、索引)=>
@itemRow(项目、索引)
}
}

其思想是首先按类别对项目进行排序,然后使用相应的索引对其进行压缩。然后,只需按类别对它们进行分组(这应该很快,因为列表已经排序)。

是否需要每个组中的索引是连续的?如何实际使用播放功能?“@repeat((_form(“foo”)、min=numFoo){x=>@inputText(x(“someField”)、…)}”,并让框架为其完成所有工作you@virtualeyes据我所知,
@repeat
正在处理已填充数据的表单。而且,无法想象在表格中重复的匹配程度。你能写详细的答案吗?@repeat将填写或生成一张空表。你看过剧本2吗???“如果可能的话,避免手动构建表单,Play可以为您做很多工作,如果您愿意的话。”virtualeyes是的,我已经看过了。但我不知道如何让它成为我想要的。文件是肤浅的,我在网上找不到关于这个话题的任何东西。
@items.sortBy(item => item.category).zipWithIndex.groupBy{ case (item, _) => item.category}.map {
  case (categoryId, indexedItemsInCategory) =>
    <table>
      @indexedItemsInCategory.map {
        case (item, index) =>
          @itemRow(item, index)
      }
    </table>
}