我希望(以嵌套的方式)将值从一个对象树复制到另一个对象树。在Java中,我会使用像Orika这样的东西。
我的特定用例是构建一系列消息增量以生成最新状态。
答案 0 :(得分:1)
Scala支持不可变的值。不要在复制方面思考 - 考虑创建一个新的对象树,它是对前一个对象树的转换。
你可能喜欢使用Shapeless' generic zipper support,可以在案例类或类似的嵌套结构中的任何位置应用转换。
我根据您的问题不了解您的使用案例 - 也许您应该更具体地了解您想要做什么。如果要将消息delta应用于消息以生成新消息,那么Lenses就是一种情况,它也可以在Shapeless中使用,尽管Monocle中的实现应该更好。
使用依赖于运行时反射的东西是不必要的 - Scala足够表达以类型安全的方式实现这些东西。