请原谅这个有趣的标题,我以类似于“zip bomb”的方式使用它。是否有可能创建一个scala源文件,该源文件在编译时会产生大量的类文件(或非常大的单个类文件)?有什么方法可以使类文件的大小增长快于与源文件大小成线性增长的速度?

最佳答案

专门化在本质上是指数化的类型参数。

class Huge[@specialized A, @specialized B, @specialized C](
  val a: A, val b: B, val c: C
) {} // 730 files, 2.9 MB

class Gigantic[@specialized A, @specialized B, @specialized C, @specialized D](
  val a: A, val b: B, val c: C, val d: D
) {} // 6562 files, 26 MB

模式匹配还可能在复杂情况下涉及大量代码重复(尽管我发现很难准确预测何时会发生这种情况)。

10-05 22:15