0

我很新玩!和 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 模板识别。什么是可能的解决方法?

4

1 回答 1

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

我还没有检查循环的内部部分,但您似乎对放置循环的位置感到困惑。也许这也可以重写为 fold 以获得更好的代码(据我所知,for 循环在 Scala 中通常被认为不好;))。要使用模板中的功能,您可能需要先导入它们。在模板的第一行之后,您声明模板函数头,您可以轻松导入诸如:@import java.util.Date. 只要确保你导入了正确的类,你也应该能够在模板中使用这些函数。

最后一点:1 to 3{1, 2, 3},所以你通常想要1 until array.length,因为1 until 3{1, 2}。通常您可以使用for (element <- array)更容易查看的符号。

于 2013-02-11T13:29:20.230 回答