我正在考慮將一個非常簡單的文本模板庫移植到scala中,主要是作爲學習語言的練習。該庫在Python和JavaScript和它的基本操作或多或少地歸結爲(在python)目前實施:我應該如何在Scala中指定類似JSON的非結構化數據?
template = CompiledTemplate('Text {spam} blah {eggs[1]}')
data = { 'spam': 1, 'eggs': [ 'first', 'second', { 'key': 'value' }, true ] }
output = template.render(data)
這一切都不是非常困難的斯卡拉做,但事情我米不清楚是如何最好地表示data
參數的靜態類型。
基本上這個參數應該能夠包含你在JSON中發現的東西的種類:幾個原始類型(字符串,整數,布爾值,空),或者零個或多個項目的列表,或零個或多個項目。 (對於這個問題,地圖可以被限制爲具有字符串鍵,這似乎是斯卡拉如何喜歡的東西)
我最初的想法只是使用Map[string, Any]
作爲頂級對象,但這是對我來說似乎不完全正確。實際上,我不想在其中添加任何類的任意對象;我只想要上面列出的元素。同時,我認爲在Java中,我真的能夠得到的最接近的數字是Map<String, ?>
,我知道Scala的一位作者設計了Java的泛型。
我特別好奇的一件事是其他類似系統的函數式語言如何處理這類問題。我有一種感覺,我真正想在這裏做的是創建一套我可以模式匹配的案例類,但我無法想象這將會如何。
我有編程斯卡拉,但說實話,我的眼睛開始在協變/逆變的東西上看一看,我希望有人能更清楚簡潔地向我解釋這一點。
你能詳細介紹一下這個[Int,InnerData [A]]類型嗎?我不明白爲什麼它是Int,首先,因爲我想要的基元是來自集合(Int,String,Boolean,null)。謝謝! – 2009-04-09 20:06:30
要麼在Java中:-) http://www.ibm.com/developerworks/java/library/j-ft13/index.html – ZiglioUK 2012-08-05 10:29:08