如何在Scala中将Map转换为案例类?
|
如果我有一个“ 0”,是否有办法将其一般地转换成“ 1”?
我可以写一个助手:
object Image{
def fromMap(params:Map[String,String]) = Image(url=params(\"url\"), title=params(\"title\"))
}
但是有没有一种方法可以通用地为映射到任何case类的代码编写一次?
没有找到相关结果
已邀请:
5 个回复
缉康怪
这将返回一个包含结果的选项。或者,您可以在Scalaz中使用
,它内部执行几乎相同的操作,但语法更好:
如果您确实需要通过反射执行此操作,那么最简单的方法是使用Paranamer(就像Lift-Framework一样)。 Paranamer可以通过检查字节码来恢复参数名称,因此会降低性能,并且由于类加载器问题(例如REPL),它无法在所有环境中正常工作。如果将自己限制为仅包含
构造函数参数的类,则可以这样进行:
(请注意,此示例可以选择默认构造函数,因为它不会检查您想要执行的参数计数)
车料
要使用它:
吐兄
的字节……这也使该技术也适用于非Scala类。 更新2:请改用莫里兹的答案,谁比我更了解我。
涸坍饺
并在sbt build中使用此依赖项:
扦帽次杏