Playframework scala howto创建临时变量

时间:2012-07-02 07:18:10

标签: scala playframework playframework-2.0

嗨所以我有一个while循环:

@for(i <- 0 until consoles.size) {
    ... Do something
    ... Add records to a column
}

但我想添加一个变量并根据具体情况将其添加到不同的组中。 例如:

@var column = 0;
@for(i <- 0 until consoles.size) {
        @if(consoles[i].groupname != consoles[i - 1].groupname) {
             column = column + 1;
        }
        ... Do something
        ... Add records to a column
    }

这可能吗?我发现的唯一的事情是通过传入一个变量并使用它,但我宁愿不这样做,虽然它只是一个int所以不向客户端发送更多信息我希望如果我可以在斯卡拉模板?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:6)

在您的情况下,有更好的解决方案。由于模板位于scala中,因此您可以使用Collections的API中的一些很棒的方法,例如groupBy:

@myList.groupBy(_.groupname).map {
    case (group, items) => {
        <h2>@group</h2>
        @items.map { item =>
            ...
        }
    }
}

Scala模板不需要Scala技能,但至少需要了解列表API,它才能真正节省生命!

答案 1 :(得分:3)

在播放模板中,您无法定义var。此外,在Scala中,我们鼓励您使用不可变对象而不是可变对象。

你有两种选择可以做你想做的事:

  1. 使用更加scala惯用的方式@Maxime回答
  2. 处理val s
  3. 除了@ Maxime的回答,您还可以使用val

    在模板中创建新的defining

    来自play 2 documentation

    @defining(user.firstName + " " + user.lastName) { fullName =>
        <div>Hello @fullName</div>
    }