副产品的运行时间成本?

时间:2016-08-01 02:02:52

标签: scala shapeless

在阅读Solving Problems in a Generic Way using Shapeless结论的第一句后:

  

在本文中,我演示了如何在不依赖昂贵的运行时功能(如反射)的情况下为ADT创建通用解决方案

这是否意味着Shapeless的副产品使用运行时反射或转换,与Scala中的ADTs相反?

1 个答案:

答案 0 :(得分:3)

我是博文的作者。我认为存在一个误解:我并不是故意暗示ADT依赖于运行时反射。我所指的是引言中的这句话:

  

传统上,通用程序是在反射API的帮助下编写的。

据我所知,ADT不使用运行时反射,但没有无形状,以通用方式遍历ADT没有太多选择。实现此目的的一种方法是使用looking up object fields at runtime的反射并迭代字段。您还可以编写遍历ADT的代码和每个ADT节点上的模式匹配,但该解决方案仅适用于您的ADT而不适用于所有其他ADT,即解决方案不是通用的。