Агрегация данных и цикл в игре + скала

Я очень новый, чтобы играть! и 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. Какой будет возможный обходной путь?

1 ответ

Как насчет этого?

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

Я не проверил внутреннюю часть цикла, но вы, кажется, не понимаете, где поставить цикл. Может быть, это также можно переписать как свернутый, чтобы получить более приятный код (насколько я понимаю, циклы обычно считаются не очень хорошими в Scala;)). Чтобы использовать функции в шаблонах, вам может понадобиться сначала импортировать их. После первой строки шаблона, где вы объявляете заголовок функции шаблона, вы можете легко импортировать такие вещи, как, например: @import java.util.Date, Просто убедитесь, что вы импортируете правильный класс, и вы также сможете использовать функции в шаблонах.

И последнее замечание: 1 to 3 дает {1, 2, 3}так ты обычно хочешь 1 until array.length, как 1 until 3 дает {1, 2}, Обычно вы можете использовать for (element <- array) обозначение, которое легче смотреть.

Другие вопросы по тегам