Skip to main content
 首页 » 编程设计

斯卡拉炸弹 (就像一个 zipper 炸弹)

2024年10月25日22jpfss

请原谅这个有趣的标题,我用它来比喻“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 

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