我很新玩!和scala,我正在尝试解析由json对象组成的数组。我需要遍历数组,计算每个对象中特定事件的数量,添加它们并将它们传递给html索引。这是我的控制器粗略的样子:
object Application extends Controller {
def stringArray=<array of strings, each a JSValue>
var counter=0
for(i<-0 to stringArray.length){
counter+=(((Json.parse(stringArray(i))\"some_element").toString()).count(y=>y=="some_keyword"))
}
def index = Action {
Ok(views.html.index(counter))
}
}
但实际上没有办法在应用程序控制器中实现for循环。我试图将数组传递给索引,但其他scala函数,如Json.parse和count似乎无法识别html模板。什么是可能的解决方法?
答案 0 :(得分:0)
这个怎么样?
object Application extends Controller {
val stringArray=<array of strings, each a JSValue>
def index = Action {
var counter = 0
for(s<-stringArray){
counter+=(((Json.parse(s)\"some_element").toString()).count(y=>y=="some_keyword"))
}
Ok(views.html.index(counter))
}
}
我没有检查循环的内部部分,但你似乎对放置循环的位置感到困惑。也许这也可以重写为折叠以获得更好的代码(据我所知,for循环在Scala中通常被认为不太好;))。要使用模板中的功能,您可能需要先导入它们。在模板的第一行(声明模板函数标题)之后,您可以轻松导入类似的内容:@import java.util.Date
。只需确保导入正确的类,您也应该能够使用模板中的函数。
最后说明:1 to 3
提供了{1, 2, 3}
,因此您通常需要1 until array.length
,因为1 until 3
会{1, 2}
。通常,您可以使用for (element <- array)
表示法,这更容易查看。