Map入力を受け取り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)
}
更新: 私はAnormに似た何かをしたいが、スカラのパーサーコンビネーターを使って何かをしたいということをもっと明確にすべきだったと思います。上記の問題は、柔軟性や再利用性がないことです。発信者は、取得したものだけを取得する必要があります。
パーサーコンビネーターがマップ形式の結果を解析するための正しいアプローチになることを願っています。ご想像のとおり、私はDyanmoDBを使用しています。
更新2: どうやら私は問題をうまく説明することができません。私がやりたいのは、呼び出し元が指定したバインディングを使用して、呼び出し元が選択したCaseクラスにマップを変換できる1つ以上のPareserCombinatorを作成することです。入力マップ=>出力ケースクラス
更新3: https ://github.com/wfaler/scala-dynamoは面白そうに見えますが、パーサーコンビネーターを使用していません。