Aer*_*rus 4 templates scala playframework-2.0
我将模板传递给TreeSet了Strings.但是,当我像这样循环遍历集合时:
@(usernames : TreeSet[String])
@for( name <- usernames){
@name ,
}
Run Code Online (Sandbox Code Playgroud)
但是,名称永远不会以正确的顺序打印.
如何在模板中迭代我的设置并按顺序打印名称?
小智 14
这与Scala模板的工作方式有关.我怀疑你的TreeSet集合在引擎盖下映射到不同的集合,因此不保留排序.
Scala for循环的行为与Scala模板中的for循环之间明显不同.如果您将代码作为常规Scala代码运行,那么TreeSet的顺序显然会被保留:
val users = TreeSet("foo", "bar", "zzz", "abc")
for (user <- users) {
println(user)
}
Run Code Online (Sandbox Code Playgroud)
解决此问题的方法之一是在Scala模板中使用迭代器:
@for(name <- usernames.iterator) {
@name ,
}
Run Code Online (Sandbox Code Playgroud)
或将TreeSet转换为序列:
@for(name <- usernames.toSeq) {
@name ,
}
Run Code Online (Sandbox Code Playgroud)