我正在编写一个使用Play Framework作为后端数据库的Scala Datomic应用程序。
当我查询Datomic时,它会将“行”作为java.util.List
个List
的{{1}} s返回。例如:
java.lang.Object
我想以最可靠的Scala惯用方式将这些转换为案例类。
目前我的代码如下:
[
[ "Joe", "1970-04-15" ],
[ "Mary", "1975-06-01" ]
]
这有点丑陋且容易出错。
有没有办法使用applicative functor来实现同样的目的?应用仿函数是最好的方法吗?还有更好的方法吗?
答案 0 :(得分:2)
Pellucid编写了一个名为Datomisca的好库,它以类型安全的方式填补了Datomic(Clojure)和Scala之间的空白。看看他们如何做conversions:
val entity = database.entity(entityId)
val name = entity.as[String](person / "name")
val age = entity.as[Long](person / "age")
从他们的网站上直接拍摄。
答案 1 :(得分:2)
result.collect {case name::date::Nil => Person(name.toString, LocalDate.parse(date.toString)}
// or case List(name,date) => ...