私はマップ入力を受け取り、ケースクラスを出力できるパーサーを構築したいと思います。今、私はFPを利用していないような命令的なスタイルのコードをいくつか持っています。私は、Caseクラスを出力できるParserを構築する方法を知ることはできません。ここでスカラマップパーサー
は私が持っているものです。
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に似ていますが、Scalaではパーサコンビネータで何かをしたいと考えていることがより明確になっている必要がありますね。上記の問題は、柔軟性がなく、再利用できないということです。呼び出し元は、取得したものだけを取得する必要があります。
私は、パーサーコンビネータがマップフォームの結果を解析するための正しいアプローチになることを期待しています。あなたが推測したように私はDyanmoDBと一緒に働いています。
更新2: 明らかに私は問題をよく説明できません。私がしたいのは、呼び出し側が指定したバインディングを使用して、呼び出し側が選択したCaseクラスにマップを変換できる1つまたは複数のPareser Combinatorsを書くことだけです。入力マップは=>出力ケースクラス
UPDATE 3: https://github.com/wfaler/scala-dynamoは面白そうだが、パーサコンビネータを使用していません。
これはDynamoDB用ですか? – Nick
ダイナモの結果をケースクラスに結びつけようとしています。 – dres
更新内容がわかりません。あなたの入力値は何ですか?最後に何を得たいですか? – sschaef