斯卡拉炸弹? (像拉链炸弹)

时间:2011-12-18 11:34:19

标签: scala class compiler-construction

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

1 个答案:

答案 0 :(得分:32)

专业化在专业类型参数的数量上具有固有的指数。

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

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