我想構建一個解析器,它可以接收地圖輸入並輸出一個Case類。現在我有一些似乎沒有利用FP的命令式樣代碼。我只是看不到如何構建可輸出Case類的解析器。斯卡拉地圖解析器
以下是我有:
def fromMap(m: Map[String,AttributeValue]): User = {
val id = m.get("user-id") map {_.getS}
val email = m.get("email").get.getS
val name = m.get("name").get.getS
val openId = m.get("openId") map {_.getS}
User(id, email, name, openId)
}
UPDATE: 我想我應該更清楚,我想這樣做斯卡拉類似ANORM但隨着解析器組合的東西。上述問題是不靈活或可重用的。來電者必須拿取他們所得到的。
我希望解析器組合器將是在地圖表單中解析結果的正確方法。正如你可能猜到的,我正在與DyanmoDB合作。
UPDATE 2: 顯然我不能很好地解釋這個問題。我想要做的就是編寫一個或多個Pareser Combinator,它可以使用調用者指定的綁定將Map轉換爲調用者選擇的Case類。輸入地圖=>輸出案例類
更新3: https://github.com/wfaler/scala-dynamo看起來很有趣,但不使用解析器組合。
這是用於DynamoDB的嗎? – Nick 2012-04-25 15:03:12
是。我試圖將發電機結果綁定到案例類。 – dres 2012-04-25 18:23:47
我不明白你的更新。什麼是你的輸入值,你最終想要得到什麼? – sschaef 2012-04-25 18:29:29