我想构建一个解析器,它可以接收地图输入并输出一个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