Playframework scala如何创建临时变量

Playframework scala如何创建临时变量,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,嗨,我有一个while循环: @for(i <- 0 until consoles.size) { ... Do something ... Add records to a column } @对于(i播放中的模板,您不能定义var。此外,在Scala中,建议您使用不可变对象,而不是可变对象 你有两种选择来做你想做的事: 如@Maxime所回答的,使用一种更具scala风格的方式 处理vals 除了@Maxime的答案外,您还可以使用定义 发件人: @defining(

嗨,我有一个while循环:

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

@对于(i播放中的模板,您不能定义
var
。此外,在Scala中,建议您使用不可变对象,而不是可变对象

你有两种选择来做你想做的事:

  • 如@Maxime所回答的,使用一种更具scala风格的方式
  • 处理
    val
    s
  • 除了@Maxime的答案外,您还可以使用
    定义

    发件人:

    @defining(user.firstName+“”+user.lastName){fullName=>
    你好@fullName
    }
    
    在您的情况下,有更好的解决方案。由于模板在scala中,您可以使用集合API中的一些优秀方法,例如groupBy:

    @myList.groupBy(_.groupname).map {
        case (group, items) => {
            <h2>@group</h2>
            @items.map { item =>
                ...
            }
        }
    }
    
    @myList.groupBy(u.groupname).map{
    案例(组、项目)=>{
    @团体
    @items.map{item=>
    ...
    }
    }
    }
    

    Scala模板不需要Scala技能,但你至少需要了解lists API,它是真正的救命稻草!

    这不会使
    fullname
    a
    var
    。正确。你不能在play2模板中定义var。你必须:a)定义VAL b)使用@Maxime回答的更实用的方法。我的回答是a),但不是很清楚。谢谢你,如果我使用@defining,这是否声明了一个字符串?或者我可以使用这个对象作为int吗?函数prorotype是def-defining[T](T:T)(handler:T=>Any),您可以使用任何类型。+1,现在正好解决了这个问题。必须用@defining包装大量代码是令人讨厌的,但是不能使用可变变量是一个主要的PITA,特别是在处理嵌套循环时。当我没有状态计数器可以使用时,如何停止迭代内部循环?
    @defining(user.firstName + " " + user.lastName) { fullName =>
        <div>Hello @fullName</div>
    }
    
    @myList.groupBy(_.groupname).map {
        case (group, items) => {
            <h2>@group</h2>
            @items.map { item =>
                ...
            }
        }
    }