user1434177
user1434177

Reputation: 1977

Playframework scala howto create temp variable

Hi So I have a while loop:

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

But what I would like to add a variable and depending on what is going on add it to a different group. For example:

@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
    }

Is this possible. The only thing I have found is by passing in a variable and using that but I would prefer not to do that, although it will only be an int so not sending alot more information to the client I would prefer if I could just declare in the scala template?

Any help would be appreciated.

Upvotes: 3

Views: 2928

Answers (2)

kheraud
kheraud

Reputation: 5288

In play templates you can't define var. Furthermore, in Scala you are encouraged to use immutable objects rather than mutable ones.

You have two alternatives to do what you want:

  1. Use a more scala idiomatic way as @Maxime answered
  2. Deal with vals

In addition to @Maxime's answer, you can create new vals in your template using defining

From play 2 documentation :

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

Upvotes: 3

Maxime Dantec
Maxime Dantec

Reputation: 562

In your case there are better solutions. Since templates are in scala, you can use some great methods from Collections' API, such as groupBy :

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

Scala templates doesn't require Scala skills, but you need at least to understand the lists API, it's a true life saver !

Upvotes: 6

Related Questions