3

こんにちはだから私は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にすぎないので、クライアントに多くの情報を送信しないようにします。 Scalaテンプレート?

どんな助けでもいただければ幸いです。

4

2 に答える 2

6

あなたの場合、より良い解決策があります。テンプレートはscalaであるため、groupByなどのCollectionsのAPIからいくつかの優れたメソッドを使用できます。

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

ScalaテンプレートはScalaスキルを必要としませんが、少なくともリストAPIを理解する必要があります。これは、真の命の恩人です。

于 2012-07-02T08:50:28.227 に答える
3

プレイテンプレートでは、を定義することはできませんvar。さらに、Scalaでは、可変オブジェクトではなく不変オブジェクトを使用することをお勧めします。

あなたがやりたいことをするための2つの選択肢があります:

  1. @Maximeが答えたように、よりスカラな慣用的な方法を使用してください
  2. に対処valする

@Maximeの回答に加えて、次をval使用してテンプレートに新しいを作成できます。defining

プレイ2のドキュメントから:

@defining(user.firstName + " " + user.lastName) { fullName =>
    <div>Hello @fullName</div>
}
于 2012-07-02T07:27:19.753 に答える