2013-02-10 41 views
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)) 
} 
} 

但有幾乎沒有辦法來實現應用程序中的控制迴路。我試圖將數組傳遞給索引,但其他scala函數(如Json.parse和count)似乎無法識別html模板。什麼是可能的解決方法?

回答

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

我還沒有檢查循環的內部部分,但您似乎對將循環放在哪裏感到困惑。也許這也可以重寫爲更好的代碼(就我所知,在Scala中通常認爲循環不好))。要使用模板中的功能,您可能需要先導入它們。在模板的第一行之後,您聲明模板函數標頭後,可以輕鬆導入諸如以下內容的內容:@import java.util.Date。只要確保你導入了正確的類,你也應該能夠使用模板中的函數。

而且最後要注意的:1 to 3{1, 2, 3},所以通常要1 until array.length,爲1 until 3{1, 2}。通常,您可以使用for (element <- array)表示法,這更易於查看。