Scala计数变量

时间:2017-03-16 18:24:45

标签: java scala

我一直在寻找一种方法来使用计数来遍历我的列表,但我找不到方法,我试图使用var count = 0无效。

这是我的代码,有人可以告诉我迭代这个的正确方法,而不仅仅是硬编码0.谢谢。

if(order != null) {
      for(i <- order.get(0).getItems) {
          i.getProduct.getName
          i.getProduct.getDescription
          "%.2f".format(i.getPrice))
          i.getQuantity()
          "%.2f".format(i.getItemTotal))
      }
}

2 个答案:

答案 0 :(得分:2)

您可以导入 import scala.collection.JavaConverters ._ 以将java集合转换为scala集合。这将处理所有事情,您可以使用scala函数。因此,无需计算和迭代。

import scala.collection.JavaConverters._
@for(order <- orders) {
  <!-- Start of For loop - For each p in products add a row -->
  @for(i <- order.getItems) {
    <tr>
      <td>@i.getProduct.getName</td>
      <td>@i.getProduct.getDescription</td>
      <td>&euro; @("%.2f".format(i.getPrice))</td>
      <td>@i.getQuantity()</td>
      <td>&euro; @("%.2f".format(i.getItemTotal))</td>
    </tr>
  }<!-- End of For loop -->
}

根据Vidya的建议更新了答案

答案 1 :(得分:2)

由于您显然使用Java ArrayList,请先执行此操作:

import scala.collection.JavaConverters._

这使您可以使用asScala将Java集合转换为更易于使用的Scala集合。

正如我在评论中提到的,我不知道你想要总结的是什么;好像你在打印东西。但是,如果你想要计算所有订单中的所有商品,你可以这样做:

val totalItems = orders.asScala.foldLeft(0)(_ + _.getItems.size)

还有其他几种方法可以生成相同的总数。