Playframework scala howto create temp variable

杀马特。学长 韩版系。学妹 提交于 2020-01-13 04:28:08

问题


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.


回答1:


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 !




回答2:


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


来源:https://stackoverflow.com/questions/11289261/playframework-scala-howto-create-temp-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!